Spring MessageListenerContainer和MessageHandler?
如果我使用Spring与XML配置集成,消息侦听器可以按如下方式完成:Spring MessageListenerContainer和MessageHandler?,spring,spring-integration,spring-jms,spring-messaging,Spring,Spring Integration,Spring Jms,Spring Messaging,如果我使用Spring与XML配置集成,消息侦听器可以按如下方式完成: <int:channel id="handlerChannel"/> <bean class="org.springframework.integration.endpoint.EventDrivenConsumer"> <constructor-arg name="inputChannel" ref="handlerChannel"/> <constructor-
<int:channel id="handlerChannel"/>
<bean class="org.springframework.integration.endpoint.EventDrivenConsumer">
<constructor-arg name="inputChannel" ref="handlerChannel"/>
<constructor-arg name="handler" ref="alertHandler" />
</bean>
<int-jms:message-driven-channel-adapter channel="handlerChannel" container="listenerContainer" />
<bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" scope="prototype">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="defaultDestination"/>
</bean>
问题是:我想在运行时创建自己的ListenerContainers。。。如何获得相同的结果,或者更确切地说,如何将MessageHandler与MessageListenerContainer结合起来
thx和问候语
MessageChannel channel = new DirectChannel();
DefaultMessageListenerContainer container = ...
JmsMessageDrivenEndpoint inbound = new JmsMessageDrivenEndpoint(container);
inbound.setOutputChannel(channel);
handler.subscribe(channel);
inbound.afterPropertiesSet();
inbound.start();
然而,为什么要在这里使用Spring集成;您可以将
MessageListener
直接连接到MessageListener容器中。谢谢您,Gary…:)我对自己的消息对象使用消息
-接口。getHeaders()
方法非常容易用于将头信息映射到bean属性,因此我可以为Spring集成@Publisher
使用一个消息对象,为侦听器使用相同的对象。只有一个位置可以设置标题信息。Spring Integration@Publisher
非常好而且很短,但是想要消息
对象:)啊,好的;酷。如果这回答了您的问题,通常会“接受”答案,以帮助其他人寻求答案。我尝试了您的解决方案,但JmsMessageDrivenEndpoint
需要容器和频道发布JMSMessageListener
。JmsMessageDrivenEndpoint
的setOutboundChannel()
方法未定义,处理程序接口没有subscribe()
方法。也许,JmsMessageDrivenEndpoint
不是正确的类?好的,你的意思是channel.subscribe(handler)
,但我相信JmsMessageDrivenEndpoint是不正确的:)对不起,你是正确的;它还需要一个ChannelPublishingJmsMessageListener
,并通过setRequestChannel
获取通道。