Spring MessageListenerContainer和MessageHandler?

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-

如果我使用Spring与XML配置集成,消息侦听器可以按如下方式完成:

<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
获取通道。