rabbitmq三种交换机的区别

RabbitMq的三种交换机分别为fanout,direct,topic

1.fanout:可以理解为分发的意思,也就是说你只需要将队列绑定到交换机上,一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上,就像广播。

2.direct,可以理解为1对1定向发送,需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。

3.topic:讲路由键和某种模式进行匹配。如"#"匹配一个或者多个词,"*"匹配一个词。如“topic.#”可以匹配到“topic.A.all”,"topic.*"只能匹配到“topic.A”

 

rabbitMq如何做到信息的可靠,不丢失不重复

rabbitMq是通过信道(虚拟TCP模式)传递消息的,在发送端,设置发送者确认模式,通过信道发送消息(生成唯一的id),当发送到指定的队列后,给生产者发送一个ack指令说明消息已发送出去。若此过程中出现服务器异常,信道会给生产者发送一个nack指令,由于是异步的,生产者会再次发送消息出去

在接受端,设置为接收者确认模式,当消费者接收到消息时并确认后,mq会删除掉队列中的数据。当在确认之前出现服务器异常,mq会认为该消息没有被分发出去,重新下发给另一个消费者。

在消息生产时,MQ内部针对每条生产者发送的消息生成一个inner-msg-id,作为去重和幂等的依据(消息投递失败并重传),避免重复的消息进入队列;在消息消费时,要求消息体中必须要有一个bizId(对于同一业务全局唯一,如支付ID、订单ID、帖子ID等)作为去重和幂等的依据,避免同一条消息被重复消费。

 

具体配置见https://blog.csdn.net/kevinmcy/article/details/82221297

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值