RabbitMQ/RabbitMQConsumer/TopicSub.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
namespace RabbitMQConsumer
{
using CommonLib.RabbitMQ;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
internal static class TopicConsumer
{
private static readonly string exchangeName = $"test.exchange.topic";
private static void Main(string[] args)
{
using RabbitMQHelper mq = new(new string[] { "192.168.181.191" });
mq.UserName = "guest";
mq.Password = "guest";
mq.Port = 5672;
mq.Received += (result) =>
{
Console.WriteLine($"message:{result.Body}");
result.Commit();
};
mq.Listen(exchangeName, "test.topic.queue2", new ExchangeConsumeQueueOptions { AutoAck = false });
#if rabbitMQClient
Console.WriteLine($"{nameof(TopicConsumer)}:");
// RabbitMQ连接工厂
ConnectionFactory factory = BaseConsumer.CreateRabbitMqConnection();
// 建立连接
using IConnection connection = factory.CreateConnection();
// 创建信道
using IModel channel = connection.CreateModel();
string exchangeName = $"testExchange_topic";
string routeKey = "testExchange_routeKey.*";
//声明交换机并指定类型
channel.ExchangeDeclare(exchange: exchangeName, type: "topic");
string queueName = $"{exchangeName}_{nameof(TopicConsumer)}";
// 声明队列
channel.QueueDeclare(queue: queueName, durable: false, exclusive: false, autoDelete: false, arguments: null);
// 将队列与交换机进行绑定
channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: routeKey);
EventingBasicConsumer consumer = new(channel);
channel.BasicQos(0, 1, false);
consumer.Received += (model, ea) =>
{
string message =
Encoding.UTF8.GetString(ea.Body.ToArray());
Console.WriteLine($"Message:{message}");
后面还有 13 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
