当前位置: 首页 > 知识库问答 >
问题:

多个通道发送到带有spring集成注释的单个通道

齐晟
2023-03-14

如何在不使用XML的情况下将2个通道输出到具有Spring集成的单个通道。类似于以下问题多通道的消息进入单通道

在我的上下文中,我有2个PollableChannel bean,我希望将消息从这两个bean(非聚合)路由到一个@ServiceActivator,即完成如下操作:

@Bean("Channel1") PollableChannel c1() {...}
@Bean("Channel2") PollableChannel c2() {...}

?? How to interleave/combine Channel1 and Channel2 into a single channel

...
@ServiceActivator(inputChannel = "Channel1and2")
void handle(msg: MyMessage) {...}

共有1个答案

景俊语
2023-03-14
@Bean("Channel1") 
@BridgeTo("Channel1and2")
PollableChannel c1() {...}

@Bean("Channel2") 
@BridgeTo("Channel1and2")
PollableChannel c2() {...}

请注意te BridgeTo注释。从其JavaDocs:

* Messaging Annotation to mark a {@link org.springframework.context.annotation.Bean}
* method for a {@link org.springframework.messaging.MessageChannel} to produce a
* {@link org.springframework.integration.handler.BridgeHandler} and Consumer Endpoint.
* <p>
* The {@link org.springframework.messaging.MessageChannel} {@link org.springframework.context.annotation.Bean}
* marked with this annotation is used as the {@code inputChannel} for the
* {@link org.springframework.integration.endpoint.AbstractEndpoint}
* and determines the type of endpoint -
* {@link org.springframework.integration.endpoint.EventDrivenConsumer} or
* {@link org.springframework.integration.endpoint.PollingConsumer}.

您还可以考虑在该桥上使用轮询器,因为您的输入通道是可轮询通道。

关于该事项的参考手册:http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/configuration.html#_creating_a_bridge_with_annotations

 类似资料:
  • 我是Spring集成的新手,正在研究一个从单个通道向多个通道发送消息的示例,从这个角度来看,为每个通道使用Redis消息存储,目的是不丢失任何消息。要求将消息发送到通道-replyChannel、mailChannel和dbChannel。目前,代码只打印sysout语句,没有主要功能。 为了检查消息是否被正确路由,我编写了一个java测试类来发送15条消息。 检查输出,我发现一些消息正在丢失。也

  • 如何通过注释而不是常规配置文件配置入站通道适配器?我可以为会话工厂定义bean,如下所示: 如何配置通过注释下给出的入站通道适配器? 我正在寻找的是在应用程序启动时连接所有bean,然后公开一些方法来开始轮询服务器,处理它们,然后从本地删除它们,类似于 其中getPollableChannel()为我提供了用于轮询的bean。

  • 我需要实现一个由多个步骤组成的集成流程,每个步骤都可以由不同数量的处理器(插件)执行。 到目前为止我所拥有的: 预期的行为如下: 通过网关发送第一个请求 一切正常,但结果不是预期的,我只收到2个(随机)项目,而不是4个。 我认为问题在于聚合器仅在两个项目之后触发发布,因为“step/2”通道中的“apply sequence”覆盖了“step/1”中的“apply sequence”。所以问题是:

  • 如何在我的建议中获得注释参数的值。我有如下场景: 我希望为所有具有@Custom注释的方法定义切入点,这里没有什么花哨的。问题是我想在建议中获取用@Param标记的参数和注释本身的值。这种带注释的参数的数量不是固定的,可以有任何数量,也可以根本没有。 到目前为止,我已经使用了反射,我能够获取带有注释的参数,但不能获取注释的值。

  • 我是Spring集成的新手 我的目标是将信息从一个渠道传递到另一个渠道(链式过程) 通道1--- 1. 尝试: 1.当我尝试使用@transformer无法与“erroeChannel”通信时。 问题: 找到答案 } 其他通道代码也是如此

  • 我有一个场景,在这个场景中,我需要通过SFTP和spring集成将一个文本文件从主机发送到多个远程计算机。请建议实现这一点的方法。我可以使用出站通道适配器发送单个文件到单个主机。我已经检查了以下链接以动态创建通道和会话工厂,但我不能以编程方式创建通道适配器,请建议https://github.com/spring-projects/spring-integration-samples/blob/a