Java 将spring云版本从Camden.SR4升级到Camden.SR5后,Dispatcher没有订阅服务器错误

Java 将spring云版本从Camden.SR4升级到Camden.SR5后,Dispatcher没有订阅服务器错误,java,spring,spring-cloud,spring-rabbit,spring-cloud-stream,Java,Spring,Spring Cloud,Spring Rabbit,Spring Cloud Stream,霉菌代码: 1.1通道接口 public interface MessageChanelInterface { String DEVICE_SINK = "device-sink"; @Input(DEVICE_SINK) SubscribableChannel receiveDeviceEvent();} 2.听众 @Service public class SubscriberToDevice { @Autowired

霉菌代码: 1.1通道接口

 public interface MessageChanelInterface {

        String DEVICE_SINK = "device-sink";

        @Input(DEVICE_SINK)
        SubscribableChannel receiveDeviceEvent();}

2.听众

@Service
public class SubscriberToDevice {

      @Autowired
      ParkingService parkingService;

      @StreamListener(MessageChanelInterface.DEVICE_SINK)
      public void receiveDeviceEvent(Object event) {
          //Some code what to do with event.
      }
}

3.夏奈尔装订

@Configuration

   @EnableBinding(MessageChanelInterface.class)

   public class MessageChanelConfiguration {

}

4.代理绑定和通道配置

spring.cloud.stream.binders.rabbit1.type=rabbit
spring.cloud.stream.binders.rabbit1.environment.spring.rabbitmq.addresses=${_rabbit.host}
spring.cloud.stream.binders.rabbit1.environment.spring.rabbitmq.port=5672
spring.cloud.stream.binders.rabbit1.environment.spring.rabbitmq.username=${_rabbit.username}
spring.cloud.stream.binders.rabbit1.environment.spring.rabbitmq.password=${_rabbit.password}
spring.cloud.stream.bindings.device-sink.binder=rabbit1
spring.cloud.stream.bindings.device-sink.destination=device
spring.cloud.stream.bindings.device-sink.group=group-${spring.application.name}


虽然我使用的是spring云版本Camden.SR4,但在收到一些消息时没有错误消息。在收到消息后升级到Camden.SR5版本后,我收到了此错误消息。我已配置发布者,他发布消息时没有错误。顺便说一下,发布服务器配置是:

spring.cloud.stream.bindings.device-source.binder=rabbit1
spring.cloud.stream.bindings.device-source.destination=device
Brooklyn.SR2(spring cloud Camden.SR5中的版本spring.cloud.stream)的订户配置是否有重大变化?因为出版商工作得很好。在spring.cloud.stream Brooklyn.SR2的描述中,我没有看到订户配置有任何变化。一些解决方案如何修复它

错误消息

org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:877)
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:787)
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:707)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:98)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:189)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at org.springframework.retry.interceptor.RetryOperationsInterceptor$1.doWithRetry(RetryOperationsInterceptor.java:74)
    at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:276)
    at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:172)
    at org.springframework.retry.interceptor.RetryOperationsInterceptor.invoke(RetryOperationsInterceptor.java:98)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
    at com.sun.proxy.$Proxy195.invokeListener(Unknown Source)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1236)
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:688)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:1190)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:1174)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1200(SimpleMessageListenerContainer.java:98)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1363)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.messaging.MessageDeliveryException: Dispatcher has no subscribers for channel 'parkingspace:default:8096.device-sink'.; nested exception is org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers, failedMessage=GenericMessage [payload=EventOccupationDetected [parkingSpaceID=141AA061-86C4-8518-03EC-39C0F6F99AE0], headers={amqp_receivedDeliveryMode=PERSISTENT, amqp_receivedRoutingKey=device, amqp_receivedExchange=device, amqp_deliveryTag=1, correlation-id=85687a94-9bcd-48bb-bfc4-765546b32996, amqp_consumerQueue=device.group-parkingspace, amqp_redelivered=false, id=01d247a7-b37b-2d79-4b90-f59812d25f4b, amqp_consumerTag=amq.ctag-qSSn_-Zw481_KxEz-pbjUQ, contentType=application/x-java-object;type=sk.posam.sp.device.domain.event.EventOccupationDetected, timestamp=1490874431951}]
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:93)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:423)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:373)
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45)
    at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105)
    at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(AbstractMessageProducingHandler.java:292)
    at org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(AbstractMessageProducingHandler.java:212)
    at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(AbstractMessageProducingHandler.java:129)
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:115)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127)
    at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:70)
    at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:64)
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45)
    at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105)
    at org.springframework.integration.endpoint.MessageProducerSupport.sendMessage(MessageProducerSupport.java:171)
    at org.springframework.integration.amqp.inbound.AmqpInboundChannelAdapter.access$400(AmqpInboundChannelAdapter.java:45)
    at org.springframework.integration.amqp.inbound.AmqpInboundChannelAdapter$1.onMessage(AmqpInboundChannelAdapter.java:95)
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:784)
    ... 24 common frames omitted
Caused by: org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:154)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:121)
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:89)
    ... 43 common frames omitted

布鲁克林.SR1和Brooklyn.SR2之间存在一个已知的回归,这是由于一些内部重构

一种解决方法是使用与
对象
不同的参数类型(无论如何,为了获得类型强制的好处,我们建议这样做)

由于这是在Brooklyn.SR3之后发现的,所以可能需要等到Brooklyn.S4或更高版本的Camden来处理。或者,你可以考虑升级到CelSEA.RC1,它刚刚被发布(计划在星期一发布,在DalSTON中发布,在春云中发布)。
编辑:关于升级到Chelsea版本的快速说明-它需要启动1.5,所以YMMV在那里

我相信Camden.SR6Camden.SR6中有一个修复程序不起作用。首先,我尝试Camden.SR6,因为我有spring boot的1.4.5.RELEASE版本,并且推荐此spring boot的spring cloud版本为Camden.SR6。但是,Camden.SR6和Camden.SR5版本对我来说并不正确。谢谢您的回答。