在使用Spring-cloud=stream时,配置如下
### boot setting
server.port=9002
### stream setting
### push channel
spring.cloud.stream.bindings.push_sender.destination=push_receiver
spring.cloud.stream.bindings.push_sender.content-type=application/json
### push channel
spring.cloud.stream.bindings.push_recevier.destination=push_return
spring.cloud.stream.bindings.push_recevier.content-type=application/json
spring.cloud.stream.bindings.push_recevier.group=push
#spring.cloud.stream.bindings.return.destination=push
#spring.cloud.stream.bindings.return.content-type=application/json
### rabbit setting
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=demo
spring.rabbitmq.password=123456
然后通道如下
package com.inlee.message.main.msgInterface;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;
public interface MessageOut {
String PUSH = "push_sender";
String SMS = "sms_sender";
String CHALLENGE = "challenge_sender";
String BIND = "bind_sender";
@Output(MessageOut.PUSH)
MessageChannel push();
@Output(MessageOut.SMS)
MessageChannel sms();
@Output(MessageOut.CHALLENGE)
MessageChannel challenge();
@Output(MessageOut.BIND)
MessageChannel bind();
}
package com.inlee.message.main.msgInterface;
import org.springframework.cloud.stream.annotation.Input;
import org.springframework.messaging.SubscribableChannel;
public interface MessageReturn {
String PUSH_RECEVIER = "push_recevier";
String BIND_RECEVIER = "bind_recevier";
String SMS_RECEVIER = "sms_recevier";
String CHALLENGE_RECEVIER = "challenge_recevier";
@Input(MessageReturn.PUSH_RECEVIER)
SubscribableChannel push();
@Input(MessageReturn.SMS_RECEVIER)
SubscribableChannel sms();
@Input(MessageReturn.CHALLENGE_RECEVIER)
SubscribableChannel challenge();
@Input(MessageReturn.BIND_RECEVIER)
SubscribableChannel bind();
}
发送时遇到如下情况
org.springframework.messaging.MessageDeliveryException: Dispatcher has no subscribers for channel 'application:9002.push_recevier'.; nested exception is org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers,
正常的channel应该是push_recevier,但是不知道为什么自己加了application:9002
求解!
谢谢了!
你的类没有注入@Service 或者把@EnableBinding 从启动类放到你的接收消息的类上