RabbitMQ 官网
1、路由队列--direct类型--生产者
using RabbitMQ.Client; using System; using System.Text; namespace RoutingSendConsole { class Program { ////// 路由队列--direct类型--生产者 /// /// public static void Main(string[] args) { ///交换机名称 string exchangeName = "exchange_direct"; ///1. 创建连接工厂 ConnectionFactory factory = new ConnectionFactory { HostName = "127.0.0.1",//rabbitmq ip Port = 5672,//端口号 UserName = "guest",//用户名 Password = "guest",//密码 //VirtualHost="/tj"//虚拟主机 }; ///2. 创建连接对象 using (IConnection connection = factory.CreateConnection()) { ///3. 创建连接会话对象,信道 using (IModel channel = connection.CreateModel()) { ///4. 绑定交换机 channel.ExchangeDeclare( exchange: exchangeName, //交换机名称 type: ExchangeType.Direct //交换机类型,直连 ); for (int i = 0; i < 1; i++) { ///消息内容 string message = $"Hello World {i} !!!"; ///5. 发送消息 channel.BasicPublish(exchange: exchangeName, routingKey: "orange", basicProperties: null, body: Encoding.UTF8.GetBytes(message)); Console.WriteLine(" [x] Sent {0}", message); } } } Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } } }
2、路由队列--direct类型--消费者
using RabbitMQ.Client; using RabbitMQ.Client.Events; using System; using System.Text; namespace RoutingReceiveFirstConsole { class Program { ////// 路由队列--direct类型--消费者 /// /// public static void Main(string[] args) { ///交换机名称 string exchangeName = "exchange_direct"; ///1.创建连接工厂 ConnectionFactory factory = new ConnectionFactory { HostName = "127.0.0.1", Port = 5672,//端口号 UserName = "guest",//用户名 Password = "guest",//密码 //VirtualHost = "/tj" }; ///2. 创建连接对象 using (var connection = factory.CreateConnection()) { ///3. 创建连接会话对象 using (var channel = connection.CreateModel()) { ///4. 绑定交换机 channel.ExchangeDeclare( exchange: exchangeName, //交换机名称 type: ExchangeType.Direct //交换机类型,direct直连 ); ///队列名称,排他队列 string queueName = channel.QueueDeclare().QueueName; ///队列和交换机绑定 channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: "black"); channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: "orange"); ///事件基本消费者 EventingBasicConsumer consumer = new EventingBasicConsumer(channel); ///接收到消息事件 consumer.Received += (model, ea) => { ///打印消息 Console.WriteLine(" [x] Received {0}", Encoding.UTF8.GetString(ea.Body.ToArray())); }; ///消费消息 channel.BasicConsume( queueName, //队列名称 true, //自动确认 consumer); Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } } } } }
3、路由队列--direct类型--消费者
using RabbitMQ.Client; using RabbitMQ.Client.Events; using System; using System.Text; namespace RoutingReceiveSecondConsole { class Program { ////// 路由队列--direct类型--消费者 /// /// public static void Main(string[] args) { ///交换机名称 string exchangeName = "exchange_direct"; ///1.创建连接工厂 ConnectionFactory factory = new ConnectionFactory { HostName = "127.0.0.1", Port = 5672,//端口号 UserName = "guest",//用户名 Password = "guest",//密码 //VirtualHost = "/tj" }; ///2. 创建连接对象 using (var connection = factory.CreateConnection()) { ///3. 创建连接会话对象 using (var channel = connection.CreateModel()) { ///4. 绑定交换机 channel.ExchangeDeclare( exchange: exchangeName, //交换机名称 type: ExchangeType.Direct //交换机类型,direct直连 ); ///队列名称,排他队列 string queueName = channel.QueueDeclare().QueueName; ///队列和交换机绑定 channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: "black"); channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: "green"); ///事件基本消费者 EventingBasicConsumer consumer = new EventingBasicConsumer(channel); ///接收到消息事件 consumer.Received += (model, ea) => { ///打印消息 Console.WriteLine(" [x] Received {0}", Encoding.UTF8.GetString(ea.Body.ToArray())); }; ///消费消息 channel.BasicConsume( queueName, //队列名称 true, //自动确认 consumer); Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } } } } }
*
*
*
*
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)