rabbitmq可以不通过路由 的方式发送生产消息,消费消息
通过路由方式:
声明队列,声明交换器,通过路由键进行绑定,发送消息时指定交换器,路由键
交换器的类型有四种(fanout,direct,topic,header )
其中direct,topic,header 可以做到一对一的发送,fanout可以实现订阅发布(不指定路由键进行广播发送)
多个消费者,rabbitmq模式(默认是轮询方式,如奇数发送A,偶数发送给B,事先安排好)两边消息都是平等,这种模式会造成消费者一个忙死一个闲死。 还有一种方式是能者多劳,不忙就把消息分给他消费,但是这种模式需要rabbitmq开启手动消息确认,同时开启单位时间最大消费一条消息。
publisher-confirms: true
publisher-returns: true
listener:
simple:
acknowledge-mode: manual 开启手动确认
concurrency: 1
max-concurrency: 1
retry:
enabled: true 重试
rabbitmq实现延迟消息。
有两种方式:
第一种是设置死信队列(消息过期,超过队列大小),思路是设置消息过期时间,消息过期之后进入私信队列,进行消费处理
第二种是 下载rabbitmq_delayed_message_exchange插件,配置到rabbitmq中,发送消息时设置消息的x-delay值,消息延迟一段时间之后进行队列,