请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Stream相关的问题myMessage

//img1.sycdn.imooc.com//szimg/5b3b2a6e0001a1c604150230.jpg

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

//img1.sycdn.imooc.com//szimg/5b3b2abe00016c3f17870635.jpg

后来我改成这样

//img1.sycdn.imooc.com//szimg/5b3b2b6f00012c6e03900185.jpg

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

//img1.sycdn.imooc.com//szimg/5b3b2b8c0001321410650551.jpg

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

//img1.sycdn.imooc.com//szimg/5b3b2b6f000153ae14180700.jpg


正在回答 回答被采纳积分+3

插入代码

2回答

十年一觉梦方醒 2018-07-08 15:29:01
  • 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 回复 有任何疑惑可以回复我~
  • 怎么输出不是时间,是[110,111,119,......]  这样的东西
    回复 有任何疑惑可以回复我~ 2018-07-08 23:57:49
  • 把接收那个方法的参数改成String就好了
    回复 有任何疑惑可以回复我~ 2018-07-09 00:42:33
  • ok了,谢谢大佬!
    回复 有任何疑惑可以回复我~ 2018-07-09 21:48:31
wirechen 2018-07-04 10:35:03

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

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

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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 少凡 #1
    第一个问题,就是将输入和输出流同量定议为myMessage 然后就启动不了,不知到怎么解决
    回复 有任何疑惑可以回复我~ 2018-07-04 11:41:01
  • wirechen 回复 提问者 少凡 #2
    如果是我遇到这个问题,我的解决思路如下:1、切换回和老师一样的版本再测试,如果不行就 2、git检出老师在该章节的代码仔细看和自己的有什么不同(因为我看你代码应该是自己敲的,避免不了可能敲错的情况)如果自己的代码和老师的代码相同那就 3、运行老师的项目,如果老师的项目能跑起来自己的却跑不起来那问题八九不离十定位在代码上(因为环境自己的和老师的肯定是一样,环境问题可以排除),如果老师的项目也跑不起来这个时候才应该去提问题向老师求助,看是自己开发环境问题还是老师的代码问题。
    回复 有任何疑惑可以回复我~ 2018-07-04 12:47:14
  • 源码暂时没看,但是这相当于是在同一个容器声明了同样的beanname了所以会提示重复。不知道是不是cloud版本问题。有用和老师一样cloud版本的同学可以说下
    回复 有任何疑惑可以回复我~ 2018-07-06 01:13:59
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号