【问题标题】:MessageListenerContainer with MessageHandler?MessageListenerContainer 与 MessageHandler?
【发布时间】:2014-12-01 14:32:50
【问题描述】:

如果我将 Spring Integration 与 XML-Configuration 一起使用,则消息侦听器可以如下完成:

<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 结合起来?

谢谢和问候

【问题讨论】:

    标签: spring spring-integration spring-jms spring-messaging


    【解决方案1】:
    MessageChannel channel = new DirectChannel();
    DefaultMessageListenerContainer container = ...
    JmsMessageDrivenEndpoint inbound = new JmsMessageDrivenEndpoint(container);
    inbound.setOutputChannel(channel);
    handler.subscribe(channel);
    inbound.afterPropertiesSet();
    inbound.start();
    

    但是,为什么要在这里使用 Spring Integration;您可以将MessageListener 直接连接到消息侦听器容器中。

    【讨论】:

    • 谢谢你,Gary... :) 我将Message&lt;T&gt;-Interface 用于自己的消息对象。 getHeaders() 方法非常易于使用,可以将标头信息映射到 bean 属性,因此我可以将一个消息对象用于 Spring Integration @Publisher,并将同一个对象用于侦听器。只有一个位置可以设置标题信息。 Spring Integration @Publisher 真的很好很短,但想要 Message&lt;T&gt; 对象:)
    • 啊,好的;凉爽的。如果这回答了您的问题,习惯上“接受”答案,以帮助其他人寻求答案。
    • 我尝试了您的解决方案,但 JmsMessageDrivenEndpoint 需要容器和 ChannelPublishingJmsMessageListenersetOutboundChannel() 方法未为 JmsMessageDrivenEndpoint 定义,并且处理程序接口没有 subscribe() 方法。也许,JmsMessageDrivenEndpoint 不是正确的类?
    • 好的,你的意思是channel.subsribe(handler),但我认为 JmsMessageDrivenEndpoint 不正确 :)
    • 对不起,你是对的;它还需要一个ChannelPublishingJmsMessageListener 并且 通过setRequestChannel 获取频道。
    猜你喜欢
    • 2019-07-10
    • 2015-10-25
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多