rabbitmq-图

优点:同步变异步,解耦,流量削峰

流程:生产者向指定交换机发信息,交换机再路由到队列中去,rabbit服务器和应用服务器建立连接,无论时发布消息,接收消息,都是通过信道完成的。

1:给rabbitmq,分配每一个权限用户,都会为该用户分配一个虚拟的mq空间,不同的mq空间是相互隔离的。

2:生产者,发送消息时候,会指定交换机,以及路由键发送消息。

3:消费者,会通过交换机,路由键,和队列进行绑定

当生产者把消息,交换机,和路由键,进行消息发布。  消息进入对交换机中,交换机通过 绑定关系,把信息路由到队列中去。消费者监听到消息,就从队列中取走。

保证信息不丢失:希望当无服务器重启的情况下,也不会丢失消息,我们对队列和消息进行持久化,

列:当生产者发送100个消息,如果不实例化,当时消费者服务关闭,队列中的消息将会丢失,实例化,当服务器重新启动,会从队列中继续接受消息

 

 

ACK:默认开启,如果正在处理消息的过程中,消费者服务器,网络,出现故障,那么正在处理的消息可能就没有完成,数据就会丢失,为了确保消息不会丢失,mq支持消息确认, ACK

ACK机制是消费者从mq收到消息后处理反馈给mq,mq收到反馈后才将消息从队列中删除。

1:如果一个消费者,在处理消息时挂掉,那么就不会有ACK反馈,mq就会认为这个消息没有正常消费,会把这个消息重新放到队列中;

2:如果在集群的情况下,mq会立即把这个消息推送给其它消费者,这种机制保证乐在消费者服务器故障的时候,不会丢失任何消息和任务。

3:消息永远不会从mq服务器中删除,只会,当消费者正确的发送ack确认反馈,mq确认收到后消息,才会从mq服务器的队列中删除此数据

4:消息的ack是默认打开的。,

问题:如果忘了,ack,当消费者退出时,信息会一直重新分发,然后mq的占用内存会越来越多,最后会导致内存泄漏

2:如果消费者接收到消息发生异常(此时消费者没有告诉mq服务器消费完成,ack没有消费确认), 那么 消息会不停的重试,  第一try catch包裹,第二设置重试次数。

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值