十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容主要讲解“RabbitMq怎么确保消息不丢失”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“RabbitMq怎么确保消息不丢失”吧!
创新互联公司是一家专注于网站设计制作、成都网站设计与策划设计,义乌网站建设哪家好?创新互联公司做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:义乌等地区。义乌做网站价格咨询:13518219792
①生产阶段,生产者创建消息,经过网络发送到rabbit服务器
②消息存储阶段,首先被发送到交换器然后经过路由算法,到达队列,等待被拉取消费
③消费阶段,消费者经过网络从rabbit服务器拉取消息进行消费
这三个阶段都有可能消息丢失,下面一一分析。
消息存储阶段
发送阶段
有。)
channel.BasicAcks += (sender, ev) =>
{
Console.WriteLine("消息已经确认收到" + ev.DeliveryTag);
};
channel.BasicNacks += (sender, ev) =>
{
Console.WriteLine("消息未确认" + ev.DeliveryTag);
};
消费阶段
通过把AutoAck设置为false,手工确认,告知服务器,消息已经处理了,可以进行消息出队删除。
channel.BasicConsume(queue: queueName, autoAck: false, consumer: consumer);
consumer.Received += (model, ea) => { //dosometing channel.BasicAck(ea.DeliveryTag, false);//确认 };
小结:如果做了以上的处理,那么消息就不会跟你躲猫猫了。这里有性能的问题,消息持久化,是要刷到磁盘上的会影响投递速度,并且消息确认也会影响到消息投递速度。不基本上能够满足需求了。如果不能满足性能需求,可以使用其他方法,比如 在每次发送消息的时候,都包含应答队列的名称,这样消费者就可以回发应答以确认接受到了。如果消息应答未在合理时间范围内到达,生产者就重新发送消息。
到此,相信大家对“RabbitMq怎么确保消息不丢失”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!