我试图在不配置使用者的情况下使用Spring Cloud Stream将消息发布到Solace中,并且出现此错误“ org.springframework.integration.MessageDispatchingException:Dispatcher没有订阅者”。
当我在同一队列中添加使用者(接收器)时,代码可以正常工作。
为什么在将消息发布到队列之前,我们需要让订阅者监听队列?
用于连接到Solace的代码
Spring Boot主类
@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.+'
答案 0 :(得分:0)
根据您提供的有限信息,我不确定您要问什么。
Spring Cloud Stream定义了应用Source
,Processor
,Sink
的3种构造型。您所描述的似乎是Source
类型的应用程序-一种不“消耗”任何东西而只产生的应用程序。 。 。,所以我不确定您指的是哪个消费者。
也许您可以将您的应用程序发布在github上的某个地方,以便我们看看。
另外,我建议您也参考our samples。
答案 1 :(得分:0)
是的,您绝对可以将SCS与Solace结合使用以保证消息传递。就像奥列格(Oleg)所说,我们可能需要更多信息以确保我们给您正确的答案。从安慰角度看,您可以共享客户端配置文件和队列信息吗?我给出了有关如何使用solace cli获取此信息的示例,但您也可以通过soladmin,PubSub + Manager或SEMP来获取。
show client-username <username> detail
show client-profile <profile_name> detail
show queue <queue_name> subscriptions