Stream相关的问题myMessage
来源:7-4 Spring Cloud Stream的使用(上)
少凡
2018-07-03
要是定议成这样!在启动时就会报错!
后来我改成这样
启动后,MQ上面只有一个Input的队列
发送消息后,打印出来的,却是OutPut 的 这是怎么回事?
2回答
-
十年一觉梦方醒
2018-07-08
order-dev.yml中添加如下配置:
Spring:
cloud:
stream:
bindings:
myInput:
destination: myStream
group: order
myOutput:
destination: myStream
StreamClien如下:
public interface StreamClient {
String INPUT = "myInput";
String OUTPUT = "myOutput";
@Input(StreamClient.INPUT)
SubscribableChannel inputMessage();
@Output(StreamClient.OUTPUT)
MessageChannel outputMessage();
}StreamReceiver如下:
public class StreamReceiver {
@StreamListener(StreamClient.INPUT)
public void process(String message){
log.info("StreamReceiver:{}",message);
}
}152019-04-03 -
wirechen
2018-07-04
第一个问题:启动报错,你看下日志已经很清楚了,你的“myMessage”已经定义过了,至于为什么重复你可以全局搜索看下,或者你的实例是否已经启动过了。
第二个问题:“启动后,MQ上面只有一个Input的队列”为什么?因为你的SteamClient中定义的队列名称都不一样!为什么要定义成相同的队列名?这就要理解流的概念,对同一个队列要有输入和输出,你这样写是不是就只是一个队列只有输入流,一个队列只有输出流呢?
第二个问题理解了第三个问题就迎刃而解,你的接收者监听了两个队列,而你在定义StreamClient的时候你的“myMessageInput”队列根本就没有定义输出,你疯狂的发消息给队列,却没有输出,消费者根本不知道从哪里获取队列的消息。
同学,你再仔细看看老师的视频吧,切勿心急,理解知识比学习知识更重要。
042018-07-09
SpringCloud Finchley(M2+RELEASE+SR2)微服务实战
5668 学习 · 2489 问题
相似问题