虚拟主题中的消息未被消费者队列消费

问题描述 投票:0回答:2

我正在尝试使用 activemq 中的队列将虚拟主题中的消息出队。我尝试发送一些消息,它显示在“消息排队”下的主题中,但无法使用。

我创建的虚拟主题名称为 VirtualTopic.AA,消费者名为 Consumer.client1.VirtualTopic.AA。

在consumer.client1.VirtualTopic.AA中,我可以看到有一个消费者,但它无法从虚拟主题中取出消息。

有人知道为什么会发生这种情况吗?我需要更改 xml 文件中的配置中的某些设置吗?

spring jms activemq virtual consumer
2个回答
0
投票

当您使用 Spring 的 JmsTemplate 发布到虚拟主题时,您需要通过将

pubSubDomain
属性设置为“true”来为主题配置它。

来自JmsTemplate文档

如果要使用动态目标创建,则必须使用“pubSubDomain”属性指定要创建的 JMS 目标的类型。对于其他操作,这不是必需的。点对点(队列)是默认域。

并在 JmsDestinationAccessor#setPubSubDomain:

pubSubDomain - 对于发布/订阅域(主题)为“true”,对于点对点域(队列)为“false”


0
投票

如果您传递带有主题名称的

jmsTemplate
实例,则可以使用
org.springframework.jms.core
中的常规
pubSubDomain
,而无需使用
true
值设置
ActiveMQTopic

jmsTemplate.convertAndSend(new ActiveMQTopic("topicName"));
© www.soinside.com 2019 - 2024. All rights reserved.