消息中间件RabbitMQ

为什么要使用RabbitMQ:

为了提高一个功能的响应速度,将高并发情况下产生的大规模耗时操作消息,发送到消息队列中,交由分布式系统中的其他服务器去完成,实现异步通信、流量削峰、弹性伸缩等功能。

 

生产者调用

convertAndSend(String exchange//交换机
, String routingKey//路由键,不同队列可以有相同路由键
, final Object object//消息体
, CorrelationData correlationData//消息体在mq中的唯一标识
)

发送消息。

消费者使用注解@RabbitListener和@RabbitHandler来监听队列处理消息

消息可靠性投递思路:

通过持久化消息体,broker的confirm机制,延时重发  完成消息的可靠性投递

可靠性投递可参考:https://blog.csdn.net/qq_18483301/article/details/90268453

消息消费幂等性问题:

什么是幂等性问题:

对于某一个操作来讲,用户的一次请求效果与多次请求效果一致。

解决方案:

对消息使用全局唯一的MessageId,并在数据库中判断是否消费过,来确保消息不会被二次消费

mq解决幂等问题方案:https://blog.csdn.net/weixin_44048532/article/details/86628234

 

简单代码用例可参考:

生产者(使用线程池和synchronized发送不同的消息体到MQ):https://gitee.com/SnailPu/springBootDemo/commits/master

消费者:https://gitee.com/SnailPu/shiro_study/commits/master

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值