我对Spring集成和处理JMS适配器项目相对较新,我试图了解各种适配器。请有人解释,为什么以及何时使用以下
<bean id="jmsDestination" class="com.tibco.tibjms.TibjmsQueue">
<constructor-arg value="queue.sample" />
</bean>
这是一个队列吗?
<integration:channel id="requests"/>
这是什么?为什么以及什么时候应该定义和使用什么?
<int-jms:outbound-channel-adapter>
和<int-jms:inbound-channel-adapter>
何时以及为什么要使用此功能?请注意,我从文档中了解到一个是消费者,另一个是向渠道创建新消息。
最后,<int-jms:message-driven-adapter>
何时以及为什么我们应该使用它?
我可以浏览文档,了解每一个文档,但是无法弄清楚编写Spring集成代码的顺序,以便我可以将它们连接在一起。
例如:表单中的答案,&#34;你需要定义一个频道,然后它应该有一个出站适配器,目的地名称匹配频道id.etc等会有很大的帮助&#34;
感谢您的帮助。
答案 0 :(得分:2)
Spring Integration是Enterprise Integration Patterns的实现。
A Message Channel
将生产者绑定到消费者身上。最常见的类型是DirectChannel
,它是您在上面定义的类型。
你的第一个<bean/>
与Spring Integration无关,它是Tibco对JMS Destination
的实现(在这种情况下是一个名为queue.sample
的队列)。不幸的是,JMS选择了“目的地”,因为你不仅仅是发送到目的地,也是从他们那里收到的。
Spring Integration适配器(以及它所在的Spring JMS)向JMS目标发送消息并从JMS目标接收消息。目标是适配器配置的一部分。
outbound-channel-adapter
用于向JMS发送消息。有两种类型的入站通道适配器,inbound-channel-adapter
是轮询的消息源 - 您将轮询器配置为每隔一段时间运行一次,并调用适配器以“轮询”消息;轮询器通常在客户端中阻塞可配置的超时。 message-driven-channel-adapter
未被轮询;它有(一个或多个)事件驱动的内部线程 - 当消息到达队列时,消息被推送到适配器的通道。
在这两者中,消息驱动适配器是最常用的,但如果您希望仅在白天的某些时间(使用cron触发器)检索消息,则可能需要使用轮询适配器。
典型的流程可能是
message-driven-adapter->transformer->outbound-channel-adapter
如果->
是通道,变换器会对数据进行一些操作,并且适配器将配置为读取和写入目标。
我建议你阅读Reference Manual的介绍性和JMS章节。