我需要创建一个ActiveMQ的主题和持久订阅者,但我不知道在哪里指定。我能够创建主题并消费消息,但当我关闭订阅者,然后继续发送消息并再次打开订阅者时,它将无法读取它们。
以下是我的进展情况:
发送消息:
我已阅读了此文章,并且理解我需要创建持久性订阅者。我还阅读了Spring文档,我认为它与DefaultJmsListenerContainerFactory有关(我没有实现,而是使用默认配置),文档显示:
但是我似乎找不到创建持久会话的地方。我的生产者和订阅者都连接到一个独立的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);
}
我已阅读了此文章,并且理解我需要创建持久性订阅者。我还阅读了Spring文档,我认为它与DefaultJmsListenerContainerFactory有关(我没有实现,而是使用默认配置),文档显示:
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setDestinationResolver(destinationResolver());
factory.setConcurrency("3-10");
return factory;
}
但是我似乎找不到创建持久会话的地方。我的生产者和订阅者都连接到一个独立的ActiveMQ二进制文件。希望你能帮助我,谢谢。