2017-04-17 96 views
0

我与卡夫卡粘结剂测试春季云流,但得到了一个错误春云流卡夫卡:“调度员没有订户”错误

产生的原因:org.springframework.messaging.MessageDeliveryException:调度员有没有订户频道'unknown.channel.name'。;

的pom.xml

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-stream</artifactId> 
     <version>1.1.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-stream-binder-kafka</artifactId> 
     <version>1.1.2.RELEASE</version> 
    </dependency> 
</dependencies> 

的玩具应用程序是模仿谁转移员工和老板之间的请求秘书。

为雇员接口:

public interface SecretaryServingEmployee { 
    @Output 
    MessageChannel inbox(); 

    @Input 
    SubscribableChannel rejected(); 

    @Input 
    SubscribableChannel approved(); 

} 

为凸台接口:

public interface SecretaryServingBoss { 
@Input 
SubscribableChannel inbox(); 

@Output 
MessageChannel rejected(); 

@Output 
MessageChannel approved();  
} 

application.properties

server.port=8080 
spring.cloud.stream.bindings.inbox.destination=inbox 
spring.cloud.stream.bindings.approved.destination=approved 
spring.cloud.stream.bindings.rejected.destination=rejected 

Employee.java

@EnableBinding(SecretaryServingEmployee.class) 
@Component 
public class Employee { 
    private static Logger logger = LoggerFactory.getLogger(Employee.class); 

    private SecretaryServingEmployee adminAssistent; 

    @Autowired 
    public Employee(SecretaryServingEmployee adminAssistent) { 
     this.adminAssistent = adminAssistent; 
    } 

    @InboundChannelAdapter(value = "inbox") 
    public String messageSource() { 
     return "You are handsome!!"; // This is the message sent to boss 
    } 

    @ServiceActivator(inputChannel="approved") 
    public void checkApproved(String message) { 
     logger.info(":-)"); 
    } 

    @ServiceActivator(inputChannel="rejected") 
    public void checkRejected(RejectionLetter letter) { 
     logger.warn(":-("); 
    } 
} 

Boss.java

@EnableBinding(SecretaryServingBoss.class) 
@Component 
public class Boss { 
    private SecretaryServingBoss adminAssistent; 

    @Autowired 
    public Boss(SecretaryServingBoss adminAssistent) { 
     this.adminAssistent = adminAssistent; 
    } 

    @ServiceActivator(inputChannel="inbox") 
    public void sign(String content) { 
     if (content.contains("You are handsome")) { 
      adminAssistent.approved().send(message("nice work")); 
     } 
     else { 
      adminAssistent.rejected().send(message("Don't send me shit")); 
     }  
    } 

    private <T> Message<T> message(T content) { 
     return MessageBuilder.withPayload(content).build(); 
    } 

} 

这是跟踪

org.springframework.messaging.MessageDeliveryException: Dispatcher has no subscribers for channel 'unknown.channel.name'.; nested exception is org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:81) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:423) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:373) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115) ~[spring-messaging-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45) ~[spring-messaging-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105) ~[spring-messaging-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(AbstractMessageProducingHandler.java:292) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(AbstractMessageProducingHandler.java:212) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(AbstractMessageProducingHandler.java:129) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:115) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:70) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:64) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115) ~[spring-messaging-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45) ~[spring-messaging-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105) ~[spring-messaging-4.3.2.RELEASE.jar:4.3.2.RELEASE] 
    at org.springframework.integration.endpoint.MessageProducerSupport.sendMessage(MessageProducerSupport.java:171) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.kafka.inbound.KafkaMessageDrivenChannelAdapter.access$000(KafkaMessageDrivenChannelAdapter.java:47) ~[spring-integration-kafka-2.0.1.RELEASE.jar:na] 
    at org.springframework.integration.kafka.inbound.KafkaMessageDrivenChannelAdapter$IntegrationMessageListener.onMessage(KafkaMessageDrivenChannelAdapter.java:197) ~[spring-integration-kafka-2.0.1.RELEASE.jar:na] 
    at org.springframework.kafka.listener.adapter.RetryingAcknowledgingMessageListenerAdapter$1.doWithRetry(RetryingAcknowledgingMessageListenerAdapter.java:76) ~[spring-kafka-1.0.5.RELEASE.jar:na] 
    at org.springframework.kafka.listener.adapter.RetryingAcknowledgingMessageListenerAdapter$1.doWithRetry(RetryingAcknowledgingMessageListenerAdapter.java:71) ~[spring-kafka-1.0.5.RELEASE.jar:na] 
    at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:276) ~[spring-retry-1.1.3.RELEASE.jar:na] 
    at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:172) ~[spring-retry-1.1.3.RELEASE.jar:na] 
    at org.springframework.kafka.listener.adapter.RetryingAcknowledgingMessageListenerAdapter.onMessage(RetryingAcknowledgingMessageListenerAdapter.java:71) ~[spring-kafka-1.0.5.RELEASE.jar:na] 
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:597) [spring-kafka-1.0.5.RELEASE.jar:na] 
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.access$1800(KafkaMessageListenerContainer.java:222) [spring-kafka-1.0.5.RELEASE.jar:na] 
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer$ListenerInvoker.run(KafkaMessageListenerContainer.java:772) [spring-kafka-1.0.5.RELEASE.jar:na] 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_121] 
    at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_121] 
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_121] 
Caused by: org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:154) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:121) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) ~[spring-integration-core-4.3.1.RELEASE.jar:4.3.1.RELEASE] 
    ... 29 common frames omitted 

回答

1

它看起来的一部分,就像你的应用程序类不是组件扫描正常。

如果您将此作为Spring Boot应用程序运行,您是否可以确定是否将要扫描的类打包正确。

例如,默认情况下,@SpringBootApplication的组件扫描查看@SpringBootApplication注释类所在的相同包中的类。

+0

是的,它是一个Spring Boot应用程序,所有的代码都在一个包中。 – ccshih

+0

你不需要每个人的唯一目的地名称?例如'@Input(“bossInbox”)'等 –

+0

唯一的目的地名称解决了问题。谢谢你,@加里·罗素 – ccshih

相关问题