加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

用于多个目标和使用者的Spring配置

发布时间:2020-12-15 01:21:58 所属栏目:大数据 来源:网络整理
导读:我正在使用一个消息侦听器容器,其中有一个目的地和一个消费者(消息侦听器): bean id="msgListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" p:connectionFactory-ref="connectionFactory" p:destination-ref="

我正在使用一个消息侦听器容器,其中有一个目的地和一个消费者(消息侦听器):

<bean id="msgListenerContainer"

  class="org.springframework.jms.listener.DefaultMessageListenerContainer" 

  p:connectionFactory-ref="connectionFactory"

  p:destination-ref="destination"

  p:messageListener-ref="messageHandler"

  p:concurrentConsumers="10"

  p:maxConcurrentConsumers="50"

  p:receiveTimeout="5000"

  p:idleTaskExecutionLimit="10"

  p:idleConsumerLimit="5" />

如果我想要多个目的地,并且对于每个目的地一个消息侦听器,我该怎么办?
如果我要在一个目的地使用多个侦听器,该怎么办?

最佳答案
1)您需要在Spring应用程序上下文中将每个消息侦听器和生产者定义为bean.像这样:

    <!-- MESSAGE LISTENER CONTAINER -->
<bean id="ListListenerContainer"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="messageListener" ref="messageListener" />
    <property name="connectionFactory" ref="qcf" />
    <property name="destinationResolver" ref="JmsDestinationResolver" />
    <property name="receiveTimeout" value="${jms-timeout}" />
    <property name="destinationName" value="${jms-list-topic}" />
    <property name="concurrency" value="1" />
    <property name="pubSubDomain" value="true" />
    <property name="subscriptionDurable" value="${jms-durable-flag}"/>
    <property name="durableSubscriptionName" value="${jms-list-durable-name}" />
    <property name="clientId" value="${jms-list-client-id}"/>
    <property name="sessionTransacted" value="true"/>
</bean> 


<bean id="publisher-1" class="com.stack.overflow.JmsPublisherImpl">
    <constructor-arg ref="jmsTemplate" />
</bean> 

2)然后,您可以使用自动装配或在应用上下文中定义的相关生产者(请参见下文)在将处理消息的类上进行设置.即上面的消息侦听器bean引用指向的类:

<bean id="messageListener" class="com.stack.overflow.MessageHandler">
        <property name="publisher" ref="publisher-1" />
</bean>

这只是1-2-1映射.对于任何其他路由,您可以添加多个发布者(如上),然后由您决定如何实现所需的路由逻辑,以决定哪个主题/队列应该发布从使用者1等收到的消息等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读