在写这个文章前不得不吐槽目前国内一些blog的文章,尽是些复制粘贴的文章,提到点上但没任何的深入和例子。………
经过测试下来总结一下RabbitMQ的Exchange的特性:
1、direct
生产者可以指定路由键,消费者可以指定路由键,但不能讲路由键设置为#(全部)。
2、topic
生产者可以指定路由键,消费者可以指定路由键,也可以不指定(或者是#)。
3、fanout
生产者和消费都忽略路由键。
在现实的场景里,通常是生产者会生产多个路由键的消费,然后多个消费来消费指定路由键的消息,但通常生产者的生产代码是同一份,如何在发消息的时候动态指定当前消息的路由键呢?
例子:门店平台系统集中处理多个门店的数据,然后分别将不同门店的数据发送到不同的门店(即:A门店只消费属于A门店的消息,B门店只消费属于B的消息)
看例子:
application.yml
1 spring: 2 cloud: 3 stream: 4 # 设置默认的binder 5 default-binder: pos 6 binders: 7 scm: 8 type: rabbit 9 environment: 10 spring: 11 rabbitmq: 12 # 连接到scm的host和exchange 13 virtual-host: scm 14 pos: 15 type: rabbit