【发布时间】:2018-01-15 08:59:25
【问题描述】:
我需要为 ActiveMQ 创建一个主题和一个持久订阅者,我的问题是我不知道在哪里指定。我可以创建主题并使用消息,但是当我关闭订阅者然后继续发送消息并再次打开订阅者时,它不会读取它们。
这是我目前所拥有的:
发送消息:
JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class);
jmsTemplate.setPubSubDomain(true);
jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);
jmsTemplate.setDeliveryPersistent(true);
jmsTemplate.convertAndSend("venta.topic",venta);
收到消息:
@JmsListener(destination = "venta.topic",id = "comercial",subscription = "venta.topic")
public void receiveMessage(Venta venta) {
logger.log(Level.INFO, "RECEIVED : {0}",venta);
repository.save(venta);
}
我已阅读 this article 并了解我需要创建持久订阅者。
我也看过spring docs
我认为这与DefaultJmsListenerContainerFactory(我没有实现,我使用的是默认配置)有关,文档显示:
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setDestinationResolver(destinationResolver());
factory.setConcurrency("3-10");
return factory;
}
但我似乎无法找到创建持久会话的位置。我的生产者和订阅者都连接到一个独立的 activemq 二进制文件。
希望你能帮助我,在此先感谢。
【问题讨论】:
标签: java spring spring-boot jms activemq