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