RabbitMQ 官网
1、主题队列--topic类型--生产者
using RabbitMQ.Client;
using System;
using System.Text;
namespace TopicsSendConsole
{
class Program
{
///
/// 主题队列--topic类型--生产者
///
///
public static void Main(string[] args)
{
///交换机名称
string exchangeName = "exchange_topic";
///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.Topic //交换机类型,主题
);
string message1 = "Hello World 1 !!!";
string message2 = "Hello World 2 !!!";
string message3 = "Hello World 3 !!!";
string topicKey1 = "quick.orange.rabbit";
string topicKey2 = "lazy.pink.rabbit";
string topicKey3 = "quick.orange.male.rabbit";
///5. 发送消息
channel.BasicPublish(exchange: exchangeName, routingKey: topicKey1, basicProperties: null, body: Encoding.UTF8.GetBytes(message1));
channel.BasicPublish(exchange: exchangeName, routingKey: topicKey2, basicProperties: null, body: Encoding.UTF8.GetBytes(message2));
channel.BasicPublish(exchange: exchangeName, routingKey: topicKey3, basicProperties: null, body: Encoding.UTF8.GetBytes(message3));
Console.WriteLine(" [x] Sent {0}", message1);
Console.WriteLine(" [x] Sent {0}", message2);
Console.WriteLine(" [x] Sent {0}", message3);
}
}
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
}
2、主题队列--topic类型--消费者
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
namespace TopicsReceiveFirstConsole
{
class Program
{
///
/// 主题队列--topic类型--消费者
///
///
public static void Main(string[] args)
{
///交换机名称
string exchangeName = "exchange_topic";
///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.Topic //交换机类型,topic主题
);
///队列名称,排他队列
string queueName = channel.QueueDeclare().QueueName;
///队列和交换机绑定
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、主题队列--topic类型--消费者
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
namespace TopicsReceiveSecondConsole
{
class Program
{
///
/// 主题队列--topic类型--消费者
///
///
public static void Main(string[] args)
{
///交换机名称
string exchangeName = "exchange_topic";
///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.Topic //交换机类型,topic主题
);
///队列名称,排他队列
string queueName = channel.QueueDeclare().QueueName;
///队列和交换机绑定
channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: "*.*.rabbit");
channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: "lazy.#");
///事件基本消费者
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();
}
}
}
}
}
*
*
*
*



