Stream相关的问题myMessage

来源:7-4 Spring Cloud Stream的使用(上)

少凡

2018-07-03

//img.mukewang.com/szimg/5b3b2a6e0001a1c604150230.jpg

要是定议成这样!在启动时就会报错!

//img.mukewang.com/szimg/5b3b2abe00016c3f17870635.jpg

后来我改成这样

//img.mukewang.com/szimg/5b3b2b6f00012c6e03900185.jpg

启动后,MQ上面只有一个Input的队列

//img.mukewang.com/szimg/5b3b2b8c0001321410650551.jpg

发送消息后,打印出来的,却是OutPut 的 这是怎么回事?

//img.mukewang.com/szimg/5b3b2b6f000153ae14180700.jpg


写回答

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);
   }
}


1
5
薛定谔与猫
回复
慕仙9264535
StreamReceiver 上还是需要这两个注解的不然直接报错 @Component @EnableBinding(StreamClient.class)
2019-04-03
共5条回复

wirechen

2018-07-04

第一个问题:启动报错,你看下日志已经很清楚了,你的“myMessage”已经定义过了,至于为什么重复你可以全局搜索看下,或者你的实例是否已经启动过了。//img.mukewang.com/szimg/5b3c30290001dfbc25940416.jpg

第二个问题:“启动后,MQ上面只有一个Input的队列”为什么?因为你的SteamClient中定义的队列名称都不一样!为什么要定义成相同的队列名?这就要理解流的概念,对同一个队列要有输入和输出,你这样写是不是就只是一个队列只有输入流,一个队列只有输出流呢?//img.mukewang.com/szimg/5b3c30c50001963307840366.jpg

第二个问题理解了第三个问题就迎刃而解,你的接收者监听了两个队列,而你在定义StreamClient的时候你的“myMessageInput”队列根本就没有定义输出,你疯狂的发消息给队列,却没有输出,消费者根本不知道从哪里获取队列的消息。

同学,你再仔细看看老师的视频吧,切勿心急,理解知识比学习知识更重要。

0
4
慕仰8426390
应该是版本的问题,有的版本是不能定义成一样的名字在一个实例中的,需要向前面的同学那样分组。类似这样: spring: cloud: stream: defaultBinder: defaultRabbit bindings: inputOrder: destination: mqTestOrder outputOrder: destination: mqTestOrder 指定一个tcp通道应该就好了,不过我也出现是一堆数字的问题。。。
2018-07-09
共4条回复

SpringCloud Finchley(M2+RELEASE+SR2)微服务实战

SpringCloud组件实现微服务,【已升级Finchley.Release】

5668 学习 · 2489 问题

查看课程