65.9K
CodeProject 正在变化。 阅读更多。
Home

Spring 与 ActiveMQ 集成,用于 POJO 服务

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2010年8月25日

GPL3

3分钟阅读

viewsIcon

86555

downloadIcon

1164

如何在纯 POJO 中使用 Spring Integration 和 ActiveMQ 处理消息。

引言

有各种各样的 ESB 可用于处理中到大型规模的消息传递需求。 Spring Integration 是所有这些 ESB 中最新的一个。 在 Spring 社区的强大支持和完善的依赖注入功能的推动下,Spring Integration(SI) 可以用作非常强大的中间件工具。 它支持消息的路由和转换,以便可以集成不同的传输和不同的数据格式,而不会影响可测试性和可扩展性。

背景

Spring Integration 的想法来自 Gregor Hohpe 的企业集成模式,该书对集成解决方案常见的许多集成模式进行了分类和解释。

了解 Spring Integration 的两个最佳地点是

  1. Joshua Long 编写的 Spring Integration 入门指南
  2. Spring Integration 参考手册

还可以看看 Mark Fisher 的博客

示例应用程序是对使用 Spring Integration 可以实现的功能的一个小型演示。 例如,它展示了如何轻松地设置 POJO 网关以与 ActiveMQ 消息队列通信。 从代码方面来看,开发人员从 JMS 的复杂性中解脱出来,只剩下简单的 XML 配置。 代码仍然是纯 POJO。 另请注意,Service 本身就是一个 POJO。 我们拥有的只是一组转换器/路由器/端点/通道。

该示例展示了如何通过 MQ 发送 SOAP 消息,并可以使用 Spring Integration 的 XSLT/XPath 支持轻松处理该消息。 还使用了 Spring OXM 和 Castor 的 Marshalling/Unmarshalling。

SOAP 消息通过以下方式发送:POJO 网关 > JMS OutBoundGateway (SI) > ActiveMQ > JMSInboundGateway(SI) > XSLT 路由器(SI) > XSLT 有效负载转换器(SI) > POJO 服务,响应沿同一路径返回。

您会注意到的一件事是服务器 (JMSInboundGateway)/客户端 (JMSOutboundGateway) 位于同一应用程序中,尽管这只是为了简单起见,并且可以轻松分离出来。

Using the Code

该代码是使用 Maven 2.0 开发的,您只需要安装 Maven 即可。 它会处理所有依赖项。

下载项目并将其作为新的 Java 项目导入到 Eclipse IDE 中。 如果您在 Eclipse IDE 中安装了 maven-plugin,则可以很容易地在 Eclipse 本身中构建该项目。

否则,在命令行中,在存在 pom.xml 的项目文件夹中,运行以下命令

mvn clean install 

代码的详细信息

应用程序的主要流程包含在 context.xml 中,该文件由 ClassPathApplicationContext 加载。

GatewayProxyFactoryBean 完成了创建 SampleGateway 的代理的所有工作,并在代理上调用 serve() 方法,并将参数发送到 JMSOutboundGateway

然后 OutBoundGateway 将其传递到 ActiveMQ。

在另一端,JMSInboundGateway 等待 requestQueue,并捕获此请求以将 SOAP XML 消息传输到 SI 转换器和路由器,以将其转换为 POJO 请求。

该请求由 Service.add(Data) 处理,响应放回 inboundGateway,该网关将其传递回 ActiveMQ。

ActiveMQ 将响应传输回客户端 JMSOutboundGateway,后者将其作为返回值传输回 SampleGateway

关注点

未完成异常处理,但可以使用网关的异常映射器非常容易地完成,并留作练习。

历史

  • 2010 年 8 月 25 日:初始发布
© . All rights reserved.