我正在尝试使用 activemq 中的队列将虚拟主题中的消息出队。我尝试发送一些消息,它显示在“消息排队”下的主题中,但无法使用。
我创建的虚拟主题名称为 VirtualTopic.AA,消费者名为 Consumer.client1.VirtualTopic.AA。
在consumer.client1.VirtualTopic.AA中,我可以看到有一个消费者,但它无法从虚拟主题中取出消息。
有人知道为什么会发生这种情况吗?我需要更改 xml 文件中的配置中的某些设置吗?
当您使用 Spring 的 JmsTemplate 发布到虚拟主题时,您需要通过将
pubSubDomain
属性设置为“true”来为主题配置它。
如果要使用动态目标创建,则必须使用“pubSubDomain”属性指定要创建的 JMS 目标的类型。对于其他操作,这不是必需的。点对点(队列)是默认域。
并在 JmsDestinationAccessor#setPubSubDomain:
pubSubDomain - 对于发布/订阅域(主题)为“true”,对于点对点域(队列)为“false”
如果您传递带有主题名称的
jmsTemplate
实例,则可以使用 org.springframework.jms.core
中的常规 pubSubDomain
,而无需使用 true
值设置 ActiveMQTopic
。
jmsTemplate.convertAndSend(new ActiveMQTopic("topicName"));