ActiveMQ показывает все сообщения, подтвержденные, хотя я только подтвердил одно - PullRequest
0 голосов
/ 05 марта 2020

Я создал производителя с транзакциями false и CLIENT_ACKNOWLEDGE, которые помещают в очередь 99 сообщений.

Я создал получателя для той же очереди с другим сеансом и обработал false и CLIENT_ACKNOWLEDGE.

Я не подтвердил первое сообщение и подтвердил оставшиеся 98 сообщений.

Я открыл консоль управления ActiveMQ и ожидал увидеть 1 сообщение, ожидающее / 1 в очереди, но, к моему удивлению, я вижу все 99 сообщений в очереди.

Может кто-нибудь указать, где я ошибся?

1 Ответ

1 голос
/ 05 марта 2020

Вы видите ожидаемое поведение, продиктованное спецификацией JMS. Раздел 4.4.11 под названием «Подтверждение сообщения» JMS 1.1 spe c сообщает:

CLIENT_ACKNOWLEDGE - с помощью этой опции клиент подтверждает сообщение, вызывая метод сообщения acknowledge. Подтверждение использованного сообщения автоматически подтверждает получение всех сообщений, доставленных его сеансом. [выделение добавлено]

Если вы используете ActiveMQ 5.x, тогда вы можете используйте режим ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE , который является расширением за пределами JMS spe c.

...