我想在 Spring Boot 应用程序中使用 ActiveMQ 作为嵌入式服务器。为了设置 ActiveMQ,我使用了以下教程:Spring Boot。使用 JMS 进行消息传递。我的应用程序将成为代理和消费者。有多个线程创建这样的消息:
@Autowired
private JmsTemplate jmsTemplate;
.......
MessageCreator messageCreator = session -> session.createObjectMessage(transactionNotificationData);
jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
jmsTemplate.send(QUEUE, messageCreator);
我有另一个具有以下方法的类:
@JmsListener(destination = QUEUE)
public void receive(Message message) throws IOException {
brokerService.getPersistenceAdapter();
try {
if (message instanceof ObjectMessage) {
ObjectMessage objMessage = (ObjectMessage) message;
NotificationData notification = (NotificationData) objMessage.getObject();
LOG.info("Received <" + notification.notification + ">");
...... do some stuff ........
// message.acknowledge();
}
} catch (JMSException e) {
e.printStackTrace();
}
在测试期间,我可以看到消息被生成和消费。如您所见message.acknowledge()
,已评论。所以我希望在重新运行我的应用程序后重新发送消息。然而它不会发生。