所以,问题在于路由器。当路由器尝试向通道发送消息时,我会收到错误:Dispatcher没有通道“newTypingNotificationHandler”的订户。输入'。但我有这个频道名称的集成流防御。
@Bean
public IntegrationFlow routeEcmIncomeRq(AbstractMessageRouter typeNotificationRouter) {
return IntegrationFlows.from(FROM_CHANNEL)
.routeToRecipients(r -> r
.recipientFlow(p -> p instanceof TypingNotificationDto,
f -> f.route(typeNotificationRouter)
)
.defaultOutputChannel(DEFAULT_SERVICE_CHANNEL)
).get();
}
@Bean
public AbstractMessageRouter typeNotificationRouter(IncomeRepository incomeRepository) {
return new AbstractMessageRouter() {
@Override
protected Collection<MessageChannel> determineTargetChannels(Message<?> message) {
TypingNotificationDto messagePayload = (TypingNotificationDto) message.getPayload();
if (!incomeRepository.existsById(StringUtil.ecdFileIdToUuid(messagePayload.getEcdDocumentImage().getDocumentSource()))) {
return Collections.singleton(MessageChannels.direct("newTypingNotificationHandler.input").get());
} else {
return Collections.singleton(MessageChannels.direct("existsTypingNotificationHandler.input").get());
}
}
};
}
@Bean
public IntegrationFlow newTypingNotificationHandler() {
return f -> f.log("need's create new Income");
}
@Bean
public IntegrationFlow existsTypingNotificationHandler() {
return f -> f.log("exist income process");
}
原因:
org.springframework.integration.MessageDispatching异常:调度器在org.springframework.integration.dispatcher.UnicastingDispatcher.do调度(UnicastingDispatcher.java:139)没有订户~[Spring-集成-core-5.2.6. RELEASE. jar: 5.2.6. RELEASE]在org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:106)~[Spring-集成-core-5.2.6. RELEASE. jar: 5.2.6. RELEASE]在org.springframework.integration.channel.AbstractSubcribableChannel.do发送(AbstractSubcribableChannel.java:73)~[Spring-集成-core-5.2.6. RELEASE. jar: 5.2.6. RELEASE]在org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:461)~[Spring-集成-core-5.2.6. RELEASE. jar: 5.2.6.发布]在org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:403)~[sping-整合-core-5.2.6. RELEASE. jar: 5.2.6. RELEASE]在org.springframework.messaging.core.GenericMessagingTemplate.do发送(GenericMessagingTemplate.java:187)~[sping-Message-5.2.6. RELEASE. jar: 5.2.6. RELEASE]在org.springframework.messaging.core.GenericMessagingTemplate. do发送(GenericMessagingTemplate. java: 166)~[sping-Message-5.2.6. RELEASE. jar: 5.2.6. RELEASE]在org. springframework. core. GenericMessagingTemplate-5.2.6. RELEASE. jar: 5.2.6. RELEASE]在org. springframework. mail. core. AbstractMessageSendingTemplate.发送(AbstractMessageSendingTemplate. java: 109)~[sping-Message-5.2.6.
您每次都返回一个新频道,而不是Spring管理的频道
MessageChannels.direct("newTypingNotificationHandler.input").get();
使用
return Collections.singleton(getChannelResolver().resolveDestination("newTypingNotificationHandler.input"));
相反。但是,最好在解析后缓存,而不是为每个消息返回一个新的集合。
我是Spring集成的新手,正在研究一个从单个通道向多个通道发送消息的示例,从这个角度来看,为每个通道使用Redis消息存储,目的是不丢失任何消息。要求将消息发送到通道-replyChannel、mailChannel和dbChannel。目前,代码只打印sysout语句,没有主要功能。 为了检查消息是否被正确路由,我编写了一个java测试类来发送15条消息。 检查输出,我发现一些消息正在丢失。也
基于spring集成的转换器使用来自一个系统的消息,检查、转换并将其发送到另一个系统。 如果目标系统关闭,我们将停止入站适配器,但也希望在本地保留或转发当前“正在运行”的转换消息。为此,只需将消息从正常输出通道动态地重新路由到某个“备份”通道。 在文档中,我只找到了根据消息头路由消息的选项(因此,在流程之前的某个步骤中,一旦targer系统不可用,我将不得不动态添加这些消息),或者基于有效负载类型
我的机器人不能发送嵌入或常规文本信息,代码执行,但没有什么是发送在不和谐的通道。我遵循了JDA维基的设置,我不知道我做错了什么。 机器人登录码
我阅读了关于用户目的地的Spring文档。我想使用方法仅向特定用户发送消息。 这是java代码: 这是客户端js代码: 首先,考虑用户价值是否正确? StampClient.connect("myuser",... 为什么这个测试不起作用?此用户未收到任何消息。如果我将目的地切换到,并将方法更改为,这将起作用,但显然是作为广播,而不仅仅是根据请求发送给特定用户。 我试图设置一个回复单用户与此代码:
我有一个camel-spring-boot应用程序,有几条路由。我现在要集成测试其中的一条路由。 这给我出问题了。如果我在测试中初始化了Spring Boot应用程序,那么所有的路由都会自动加载。属性从我的.yml文件中正确读取。
使用Spring Integration Kafka,使用出站通道适配器,我尝试向名为“test”的主题发送消息 通过命令行终端,我启动了动物园管理员、kafka并创建了名为“test”的主题 Spring XML配置 JUnit测试代码 测试用例成功,在调试时,我发现channel.send()返回true 我使用下面的命令通过命令行检查了主题,但是我在测试主题中看不到任何消息。 bin/kaf