消息处理过程
RabbitMQ 的消息处理流程
RabbitMQ的四种交换机
1.Direct exchange 直连交换机
一个对列和一个交换机进行绑定,同时还能指定routing_key,来实现生产者通过绑定DirectExchange,在绑定routing_key,可以将消息送到多个对列里面去。
2.Fanout exchange 扇形交换机
通过FanoutExchange绑定多个对列,可以实现对多个对列进行广播发送消息。
3.Topic exchange 主体交换机
发送到主题交换机上的routing_key需要携带规则,主题交换机可以根据这个规则把消息发送到指定对列。 交换机和队列绑定时候设置的binding_key需要采用*.#*…的规则。
- *代表一个单词
- 3代表任意数量的单词。 如果通配符设置为#的话,这对列将会无视路由键接受所有的消息。
4.Headers exchange 首部交换机
头交换机完全忽视routing_key,使用消息的属性来进行分发,是根据headers属性进行匹配的。
//map为绑定的规则
Map<String, Object> map = new HashMap<>();
map.put("headers1", "value1");
map.put("headers2", "value2");
//whereAll表示需要满足所有条件
BindingBuilder.bind(headersQueue()).to(headersExchange()).whereAll(map).match();