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()
のとおり、コメントされています。したがって、アプリの再実行後にメッセージが再配信されることを期待しています。しかし、それは起こりません。