0

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

4

1 に答える 1