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

动态实例化Spring集成流

狄高畅
2023-03-14

我有一个Spring集成流项目,它公开了一个Rest网关,在接收到Rest POST请求后,它会执行一些较小的逻辑。基于一些有效载荷参数,我想动态激活另一个Spring集成流,并将消息路由到该流中的指定通道,我可以在基于有效载荷的主流中发现该通道。子流将把响应消息放在主流中定义的指定通道中。

我如何才能实现这一点。

共有2个答案

范嘉
2023-03-14

请参阅动态ftp示例,该示例使用自定义路由器来实例化子流并路由到新流的通道。

另请参阅我对这个问题的回答及其对类似机制的后续介绍,这次使用java配置进行入站邮件适配器。

马俊
2023-03-14

从版本1.2开始,Spring Integration Java DSL为运行时流注册提供了API:

@Autowired
private IntegrationFlowContext context;
...

IntegrationFlow myFlow = f -> f
            .<String, String>transform(String::toUpperCase)
            .transform("Hello, "::concat);

String flowId = this.context.register(myFlow);
MessagingTemplate messagingTemplate = this.context.messagingTemplateFor(flowId);

assertEquals("Hello, SPRING",
            messagingTemplate.convertSendAndReceive("spring", String.class));

this.context.remove(flowId);

因此,根据您的逻辑,您可以构建和执行一个或另一个流。

围绕该API,您甚至可以构建一些缓存,不要多次注册相同的流,而是在第一次注册后重用。

 类似资料:
  • 主要内容:1. 工程结构,2. Spring监听器,3. 注册Spring Bean,4. Struts.xml,5. 示例,用例1,用例 2,参考在本教程中,我们来学习Struts2和Spring的集成。 1. 工程结构 下面的图是本教程的项目文件夹结构。 2. Spring监听器 配置Spring监听器 “org.springframework.web.context.ContextLoaderListener” 到 web.xml 文件中。 web.xml 3. 注册Spring Bean

  • 主要内容:1. 工程文件夹结构,2. MySQL表结构结构,3. Hibernate相关配置,5. Struts2相关,6. Spring相关配置,7. JSP 页面,8. struts.xml,9. Struts 2 + Spring,10. 运行实例,参考在本教程中,它显示的集成 “Struts2 + Spring + Hibernate“,请务必检查以下之前继续学习教程。 Struts2 + Hibernate集成实例 Struts2 + Spring 集成实例 参见集成步骤总结: 获取所

  • 基于spring集成的转换器使用来自一个系统的消息,检查、转换并将其发送到另一个系统。 如果目标系统关闭,我们将停止入站适配器,但也希望在本地保留或转发当前“正在运行”的转换消息。为此,只需将消息从正常输出通道动态地重新路由到某个“备份”通道。 在文档中,我只找到了根据消息头路由消息的选项(因此,在流程之前的某个步骤中,一旦targer系统不可用,我将不得不动态添加这些消息),或者基于有效负载类型

  • 我正在尝试用EmbeddedMongoDB测试我的spring data mongodb存储库,这些存储库是从MongoRepository扩展的接口。与本教程一样,我希望创建不使用spring应用程序上下文的测试,如果我在存储库类中使用普通mongoTemplate,这是可以实现的。 因此,是否可以通过传递Mongo&MongoTemplate实例,使用提供的实用工具方法来实例化MongoRep

  • 本文向大家介绍Spring web集成rabbitmq代码实例,包括了Spring web集成rabbitmq代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring web集成rabbitmq代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 引入java包: 本项目中仅引入了四个java包:amqp-client-

  • 可以在运行时向spring integration dsl注册MessageSources吗? 在我的例子中,我想创建多个FileReadingMessageSources(基于UI的输入),然后将有效负载发送到特定的通道/jms路由(从元数据或用户输入读取) 另一个问题是,是否可以动态注册IntegrationFlows?