一个天天用消息队列的人,不知道为啥用 MQ,这就有点尴尬
处理Ack和Nack的代码如下所示(说好不上代码的,偷偷上了):
(2)消息队列丢数据 处理消息队列丢数据的情况,一般是开启持久化磁盘的配置。 这个持久化配置可以和confirm机制配合使用,你可以在消息持久化磁盘后,再给生产者发送一个Ack信号。 这样,如果消息持久化磁盘之前,rabbitMQ阵亡了,那么生产者收不到Ack信号,生产者会自动重发。 那么如何持久化呢,这里顺便说一下吧,其实也很容易,就下面两步 1、将queue的持久化标识durable设置为true,则代表是一个持久的队列 2、发送消息的时候将deliveryMode=2 这样设置以后,rabbitMQ就算挂了,重启后也能恢复数据 (3)消费者丢数据 消费者丢数据一般是因为采用了自动确认消息模式。 这种模式下,消费者会自动确认收到信息。这时rahbitMQ会立即将消息删除,这种情况下如果消费者出现异常而没能处理该消息,就会丢失该消息。 至于解决方案,采用手动确认消息即可。 kafka ![]() Producer在发布消息到某个Partition时,先通过ZooKeeper找到该Partition的Leader 然后无论该Topic的Replication Factor为多少(也即该Partition有多少个Replica),Producer只将该消息发送到该Partition的Leader。 Leader会将该消息写入其本地Log。每个Follower都从Leader中pull数据。 针对上述情况,得出如下分析 (1)生产者丢数据 在kafka生产中,基本都有一个leader和多个follwer。follwer会去同步leader的信息。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |