对于以下情况,我正在寻找您的建议和最佳实践提示:
在具有以下功能的分布式(主要是基于Java的)系统中:
如何最好地应用Spring Integration框架提供的JMS支持来将客户端与工作节点分离开?在阅读参考文档和一些最初的实验时,看起来JMS入站适配器的配置本质上要求使用订户,而在分离的情况下则不存在。
小附注:通信应通过JMS文本消息进行(使用JSON数据结构以备将来扩展)。
这并不能真正回答您的问题,但是请确保您使用Apache Camel连接不同的组件。我发现将JMS队列连接到现有Web服务并计划将其用于其他组件非常有用。
监视ActiveMQ队列中的消息,对其进行转换并将其发布到Web服务的示例:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring-2.3.0.xsd"> <bean id="callbackProcessor" class="com.package.CallbackProcessor"/> <bean id="activemq" class="org.apache.camel.component.jms.JmsComponent"> <property name="connectionFactory" ref="jmsFactory" /> </bean> <camel:camelContext id="camel"> <!-- Must put this in camel:endpoint because camel:from doesn't support property substitution --> <camel:endpoint id="callbackQueue" uri="activemq:queue:${jms.callback-queue-name}"/> <camel:route> <camel:from ref="callbackQueue"/> <camel:process ref="callbackProcessor"/> <camel:to uri="http://dummy"/><!-- This will be replaced by the callbackProcessor with the callback URL in the message --> </camel:route> </camel:camelContext> </beans>
这是我们Spring应用程序中启动Camel并开始处理消息所必需的。