RabbitMQ
文章平均质量分 56
期华_
珍惜现在,便是把握未来。
展开
-
RabbitMQ使用插件实现延迟消息,常见问题解决方案
文章目录安装插件代码注册交换机和Queue消息发送者消息消费者常见问题安装插件下载rabbitmq_delayed_message_exchange插件地址(尽量与rabbitMQ版本一致):https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases将 rabbitmq_delayed_message_exchange 插件拷贝到 rabbitMQ 安装目录下的 plugins 目录中进入RabbitMQ安装目录中的原创 2022-03-05 01:04:50 · 3064 阅读 · 0 评论 -
RabbitMQ中使用Redis解决消费者重复消费的问题
为什么解决重复消费的问题?生成者在发送消息时可能因为网络或其他原因导致消息发送延时,补偿机制会重新发送相同的消息消费者消费异常解决思路生产者发送消息时携带一个唯一的id消费者每次消费前先判断一下在redis中是否在id,不存在就消费,消费完之后就把id存储到redis中代码实现消费者发送消息携带id @GetMapping("/directredis") public String sendMsgRedis(@RequestParam Map<String,O原创 2020-08-01 08:45:47 · 1921 阅读 · 3 评论 -
RabbitMQ中消费者对死信队列的处理
不做任何处理会出现的问题如果不做任何处理,当消费消息时出现异常,默认会不断的重试,这显然不是我们希望的我们希望的是:可以指定重试的次数,重试完了之后进入死信队列,然后就可以人为的对死信队列进行处理代码实现设置重试次数关联死信队列需要将一个Queue关联死信队列的Exchange和RoutingKeypackage com.wcong.config;import org.springframework.amqp.core.*;import org.springframework.con原创 2020-08-01 08:43:59 · 2905 阅读 · 1 评论 -
RabbitMQ中生产者消息100%投递方案
大致流程生产者投递消息只关注两点:消息是否能正确到达Exchange到达Exchange后是否正确路由到Queue基本思路在发送消息前把消息的相关信息(消息内容、Exchange、RoutingKey…)存储到数据库,起始状态为-1,若此步骤出现错误则记录系统日志。在ConfirmCallback回调中判断消息是否正确发送到Exchange,若发送成功,则将状态更改为1,发送失败则不做处理在ReturnCallback的回调中对路由失败的消息重新保存到数据库,状态改为4,考虑人工处理(如原创 2020-07-30 18:15:57 · 311 阅读 · 1 评论 -
RabbitMQ中生产者丢消息的情况
生产端丢消息的情况1、连接broker失败(连接地址写错、broker宕机)通过try、catch解决2、连接正常,不能发送到Exchange、发送到exchange但没有路由到queue(exchange写错、queue没有接受)因为消息时异步发送的,所以只能通过回调的方式判断是否发送成功,然后在通过补偿机制进行补救。回调的代码实现把Exchange的名称故意写错(这里就不上图了)。虽然返回的结果是正常的,但消息并没有实际路由到Queue中,从而丢消息。解决方法:通过回调的方式判原创 2020-07-30 18:13:04 · 525 阅读 · 0 评论