ActiveMQ Artemis браузер пустые сообщения, когда количество сообщений <1000 - PullRequest
0 голосов
/ 03 июля 2019

Я наблюдаю странное поведение, которое не могу объяснить.Мое приложение использует Spring Boot для доступа к ActiveMQ Artemis, а также для создания и использования сообщений, что прекрасно работает.

Однако, когда я пытаюсь использовать browse в очереди, которую мое приложение не прослушивает, ни мой вызов browse, ни консоль управления Artemis не могут перечислить содержимое очереди, если число сообщений приблизительно меньше 1000Для большего количества сообщений или когда я останавливаю слушателя очереди, тогда это работает. Почему это происходит?

1 Ответ

1 голос
/ 03 июля 2019

Я догадываюсь, что это вызвано буфером сообщений на клиенте. Клиент обычно буферизует множество сообщений от брокера в качестве оптимизации производительности, потому что выполнение сетевого обхода для получения каждого отдельного сообщения может быть очень медленным. С точки зрения брокера сообщения, которые находятся в этом состоянии, «находятся в доставке» (то есть они были отправлены клиенту, но еще не были подтверждены клиентом). Сообщения в этом состоянии недоступны для просмотра. Как только в очереди будет достаточно сообщений, чтобы превысить размер буфера клиента (который в вашем случае составляет около 1000), вы начнете видеть эти сообщения в браузере. Если вам не нужна эта оптимизация производительности для ваших клиентов, вы можете отключить ее, установив consumerWindowSize=0 в URL-адресе клиента (например, tcp://127.0.0.1?consumerWindowSize=0).

...