春季云流-RabbitMQ配置

时间:2020-04-29 15:32:52

标签: java rabbitmq spring-cloud-stream

我正在使用Spring Cloud Stream Java学习RabbitMq。对mq配置有疑问。

根据文档- spring.cloud.stream.bindings。> channelName> .destination = dest1

我正在使用以下配置,并且可以正常工作-

spring.cloud.stream.bindings.input.destination = dest1

但是,如果我在以下输入中提及我的频道名称,则该频道名称无效- spring.cloud.stream.bindings.myChannel.destination = dest1

在我的课堂上- @INPUT('myChannel')

我的疑问是,当我提到类和

中给出的channelName时,为什么它不起作用

但是当我将默认值设置为.input时,它可以正常工作。 ..?

更新

MyInterface.java

String CHANNEL = myChannel;
@INPUT(CHANNEL )
SubscribableChannel subs();

MyListener.java

@StreamListener(MyInterface.CHANNEL)
public void queueMsg(String str) {
   System.out.println("Str msg = "+str);
}

application.prop

#Below property working fine
spring.cloud.stream.bindings.input.destination=dest1
spring.cloud.stream.bindings.input.binder=rabbit


#Below property NOT working 
#spring.cloud.stream.bindings.myChannel.destination=dest1
#spring.cloud.stream.bindings.myChannel.binder=rabbit

1 个答案:

答案 0 :(得分:0)

在这种情况下,通道名称是绑定名称input

spring.cloud.stream.bindings。输入 .destination = dest1

对于RabbitMQ,目的地是我们将发布到的交换名称。

使用@Input("input")

spring.cloud.stream.bindings。 myChannel .destination = dest1

如果它不起作用,则需要显示您的侦听器和界面。