gpt4 book ai didi

java - 如何使用 Spring JMS 监听 JMS 主题

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:05 25 4
gpt4 key购买 nike

我有一个 HornetQ 服务器,它有主题和队列。我不知道另一端的配置,但我连接到队列的方式是:

<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref ="jndiTemplate"/>
<property name="jndiName" value="ConnectionFactory"/>
</bean>

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="defaultDestination" ref="destination"/>
<property name="pubSubDomain" value="false"/>
<property name="deliveryPersistent" value="true"/>
<property name="deliveryMode" value="2"/>
</bean>

<bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate"/>
<property name="jndiName" value="QUEUE_NAME"/>
</bean>

<!-- Listener Asynchronous -->
<bean id="queueListener" class="com.my.queueListener"/>

<jms:listener-container concurrency="5-10">
<jms:listener destination="QUEUE_NAME" ref="queueListener"/>
</jms:listener-container>

我已将 pubSubDomain 设置为 true 并且它起作用了(奇怪但正确)。无论如何,现在我想连接到一个主题。我将 pubSubDomain 设置为 true 但它仍然给我一个错误

WARNING: Setup of JMS message listener invoker failed for destination 'Activate_NTD' - trying to recover. Cause: There is no queue with name TOPIC_NAME

我知道 HornetQ 的行为与此处指定的有所不同:

exact example for JMS Topic in HornetQ

但我不知道该怎么做以及如何让它发挥作用。

最佳答案

在默认为队列的容器上设置destination-type,例如

<jms:listener-container destination-type="topic" concurrency="5-10">
<jms:listener destination="TOPIC_NAME" ref="topicListener"/>
</jms:listener-container>

关于java - 如何使用 Spring JMS 监听 JMS 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24921278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com