rabbitmq
Strive11
这个作者很懒,什么都没留下…
展开
-
Springboot集成RabbitMq Exchange交换机
Exchange交换机和FanoutExchange交换机一样都是无视key的。他会根据headers参数来匹配,然后发送消息到相应的消息队列。匹配规则有两个Where Any --头部信息至少有一个匹配Where All --头部信息必须完全匹配下面我们来创建交换机和队列,以及绑定。@Componentpublic class HeaderExchange { @Bean public Queue queue1(){ return new Queu原创 2020-08-19 10:14:58 · 718 阅读 · 1 评论 -
springBoot用redis为rabbitMQ做幂等性,防止重复消费
大家好,今天分享一下我用redis来防止MQ重复消费的办法。凡是用到MQ,都会有两个很大的困惑。一,是确保消息不丢失(消息高可用)二,防止消息重复消费。保证防止消息不丢失,我们可以利用MQ的callback来确保消息是否发送成功,是否发送到交换机和队列。但是对于消息重复消费这个事情,我在网上查阅了很多资料,发现大致也就如下两点:一,利用数据库主键(insert的时候主键不可重复)二,利用redis的set操作(set相同的key会直接覆盖)以上两点确实可以解决消息重复消费,但是只适用于消费者原创 2020-06-15 17:41:58 · 3602 阅读 · 4 评论 -
springboot集成rabbitmq手动AKC机制
场景:rabbitmq 服务器宕机时有消息正在处理,此时消息未处理完成,但是也没报错,再次启动MQ该消息消失解决办法:手动ACK手动ACK:但我们的业务完成的时候手动告诉队列已经完成,如果没告诉队列,该消息会一直存放在队列中。channel.basicAck(message.getMessageProperties().getDeliveryTag(),false); 告诉队列已经消费完成...原创 2020-04-09 17:55:37 · 648 阅读 · 0 评论 -
springBoot rabbitMQ 死信队列
假设一种场景:当我们生产者发送了错误的参数,或者消费者这边处理的时候抛出异常,然后这条消息会被重新放入队列中再次分发给消费者进行消费,这样子会造成一个死循环报错,十分影响性能和服务器资源。简单的解决办法:直接try cath,报错以后消息直接丢失比较好的解决办法:创建一个队列,用来处理抛出异常的消息。// 首先声明死信队列@Bean("redirectQueue")public Queu...原创 2020-04-09 17:46:58 · 753 阅读 · 0 评论