介绍
通过stream可以让程序跟具体队列组件解耦,程序不用关心队列组件的使用,只要建立好相应的通道,不论队列组件怎么更换,程序都无需关心。stream让程序通过通道来进行消息的生产和消费。
Stream中的input和output只是个别名,不论生产者的输出通道名和消费者的输入通道名叫什么都无所谓,真正实现效果的是通道绑定了哪个交换机哪个队列。
对于通道的命名,为了易于区分,可让输入和输出采用同样的通道名,表示生产者往这个通道发送消息,消费者消费消息;或者采用channel_output和channel_input的写法,用于区分输入和输出方。
在springboot2.x以上对应的springcloud stream版本中,在同个项目中将相同的通道名绑定到不同通道可能会报该通道名已存在的错误。在看过的教程里,作者的版本是2.0.0.M3,springcloud是Finchley.M2可以将同样的通道名绑定到不同的通道上(纳闷)。
如下图所示,input代表消费者,交换机和队列是由消费者创建。该配置表示将交换机wdtest_下的average队列绑定到通道input(命名随意别重复即可)。在写程序时只需监听该通道即可接收到该队列的消息。
output代表生产者,该配置表示将交换机绑定到该通道下,程序只需往该通道发送消息即可。