RabbitMQ系列(⼆)-点对点模式RabbitMQ系列(⼆)-点对点模式
上⼀篇 :
下⼀篇 :
这⾥写⽬录标题
⼀、介绍
1. Rabbitmq作为⼀个优秀的消息队列中间件,提供很多种消息⽣产消费的⼯作模式
2. 点对点模式只是其中的⼀种. 指的是⼀个同⼀时刻,⼀个⽣产者,⼀个队列,⼀个消费者.
3. 使⽤默认的default交换机,rootingkey是ququename
4. 下图是官⽹对这个模式介绍的⼀张图⽚.
⼆、测试
2.1 ⽣产者
1. ⾸先安装Nuget包–>RabbitMQ.Client
2. ⽣产者—>
static void Main(string[] args)
{
var factory =new ConnectionFactory
{
HostName ="192.168.3.20", # rabbit地址
Port =5672, # 如果改了端⼝的需要在这⾥指定
UserName ="xxx", #登录名
Password ="xxx", #密码
VirtualHost ="/"#虚拟主机
};
#region点对点
string queueName ="OneToOne"; # 声名队列
using var conn = factory.CreateConnection(); #创建连接
using var channel = conn.CreateModel(); #创建channel信道
channel.QueueDeclare(queue: queueName, # 声明队列
durable:false,
exclusive:false,
autoDelete:false,
arguments:null);
Console.WriteLine("请输⼊要发送的消息,如果发送完毕,输⼊ok即可.");
var sendMsg ="";
while(sendMsg !="ok")
{
sendMsg = Console.ReadLine();
var body = Encoding.UTF8.GetBytes(sendMsg);
channel.BasicPublish(exchange:"", # 发送消息
routingKey: queueName,
basicProperties:null,
body: body);
if(sendMsg =="ok")
{
Console.WriteLine("消息发送结束,按任意键退出.");
}
else
{
Console.WriteLine($"Send ====>{sendMsg}");
}
}
#endregion
Console.ReadKey();
}
3. 此时咱们看到消息已经发送到了rabbitmq中,队列名称OneToOne.⾄于交换机请看下图.
4. 从上图可以看到,在不绑定交换机的情况下,⼀律使⽤的都是rabbitmq的默认交换机.rootingkey是队列名称2.2 消费者
var factory =new ConnectionFactory
{
HostName ="192.168.3.20", # rabbit地址
Port =5672, # 如果改了端⼝的需要在这⾥指定
UserName ="xxx", #登录名
Password ="xxx", #密码
VirtualHost ="/"#虚拟主机
};
#region点对点
string queueName ="OneToOne"; # 声名队列
using var conn = factory.CreateConnection(); #创建连接
using var channel = conn.CreateModel(); #创建channel信道
channel.QueueDeclare(queue: queueName, # 声明队列
durable:false,
exclusive:false,
autoDelete:false,
arguments:null);
#消费者是以事件的⽅式订阅消息的
var consumer =new EventingBasicConsumer(channel);
consumer.Received +=(model, ea)=>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
Console.WriteLine($"Received {message}");
};writeline教程
channel.BasicConsume(queue: queueName, #消费完成通知rabbit
autoAck:true,
consumer: consumer);
#endregion
Console.ReadKey();
1. 上两图可以看到消费完成后,rabbitmq的队列⾥⾯积压数清零了.
2.3 联动实时发送和消费测试
三、总结
1. 上⾯博主介绍了点对点的⼯作模式和实现.
2. 但是实际上我们很少⽤这种⽅式,因为消费能⼒不⾜.只有⼀个⽣产者和⼀个消费者.
3. 但是在针对某些场景我们只能⽤点对点的⽅式,⽐如·强顺序消费·的场景.就只能点对点了. 要保证消息的顺序
4. 如有不对,欢迎指正.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论