我正在使用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
答案 0 :(得分:0)
在这种情况下,通道名称是绑定名称input
。
spring.cloud.stream.bindings。输入 .destination = dest1
对于RabbitMQ,目的地是我们将发布到的交换名称。
使用@Input("input")
。
或
spring.cloud.stream.bindings。 myChannel .destination = dest1
如果它不起作用,则需要显示您的侦听器和界面。