Я пытаюсь отправлять сообщения в Solace с помощью Spring Cloud Stream без настройки потребителя, и я получаю эту ошибку "org.springframework.integration.MessageDispatchingException: у Dispatcher нет подписчиков".
Когда я добавляю потребителя (Sink) в ту же очередь, код работает нормально.
Зачем нам нужно, чтобы подписчик слушал очередь, прежде чем отправлять сообщение в очередь?
Код, используемый для подключения к Утешению
Spring Boot Main Class
@SpringBootApplication
@EnableDiscoveryClient
@Slf4j
@EnableBinding({SendReport.class})
public class ReportServerApplication {
public static void main(final String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-server.xml");
new SpringApplicationBuilder(ReportServerApplication.class).listeners(new EnvironmentPreparedListener()) .run(args);
}
Класс для подключения канала к теме:
public interface SendReport {
String TO_NMR = "solace-poc-outbound";
@Output(SendReport.TO_NMR)
MessageChannel output();
}
Обработчик сообщений:
@Slf4j
@Component
@EnableBinding({SendReport.class})
public class MessageHandler {
private SendReport sendReport;
public MessageHandler(SendReport sendReport){
this.sendReport = sendReport;
}
@Output(SendReport.TO_NMR)
public void sendMessage(String request) {
log.info("****************** Got this Report Request: " + request);
var message = MessageBuilder.withPayload(request).build();
sendReport.output().send(message);
}
}
Свойства, использованные для конфигурации: application.yml
spring:
cloud:
# spring cloud stream binding
stream:
bindings:
solace-poc-outbound:
destination: TOPIC_NAME
contentType: text/plain
solace:
java:
host: tcp://xyz.abc.com
#port: xxx
msgVpn: yyy
clientUsername: aaa
Используемые зависимости:
'org.springframework.cloud:spring-cloud-stream',
'com.solace.spring.cloud:spring-cloud-starter-stream-solace:1.1.+'