如何在真实的JMS分布式架构中利用Spring Integration?

对于以下场景,我正在寻找有关最佳实践的建议和提示:

在分布式(主要是基于Java)系统中:

  • 许多(不同的)客户端应用程序(web-app,命令行工具,REST API)
  • 中央JMS消息代理(目前支持使用ActiveMQ)
  • 多个独立处理节点(在多个远程计算机上运行,​​计算由JMS消息有效负载指定的不同类型的昂贵操作)

如何最好地应用Spring Integration框架提供的JMS支持来将客户端与工作节点分离? 在阅读参考文档和一些初步实验时,看起来JMS入站适配器的配置本身就需要使用订户,而订户在解耦方案中不存在。

小方说明:通过JMS文本消息进行通信(使用JSON数据结构以实现未来的可扩展性)。

这并不能真正回答您的问题,但请务必查看Apache Camel以连接您的不同组件。 我发现将JMS队列连接到现有Web服务非常有用,并计划将其用于其他组件。

监视ActiveMQ队列以获取消息,转换消息并将其发布到Web服务的示例:

               

这就是我们的Spring应用程序启动Camel并开始处理消息所必需的。

这是我今天提出的Spring Integration,如果你找到可以改进的东西,请跟进。

在客户端,可以通过SimpleMessagingGateway发送和接收消息:

                   

并且处理节点侧的配置看起来像(有关Spring Integration元素的更多说明,请参阅内联注释):

               

您是否在询问是否可以使用Spring Integration来实现协议桥接 ? 然后答案是肯定的,并且非常简单。