我正在使用一个消息侦听器容器,其中有一个目的地和一个消费者(消息侦听器):
<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等收到的消息等.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。