Apache .NMS.AMQP настройка размера предварительной выборки - PullRequest
0 голосов
/ 08 января 2020

Я использую Apache .NMS.AMQP (v1.8.0) для подключения к AWS управляемому брокеру ActiveMQ (v5.15.9), но у меня проблемы с настройкой размера предварительной выборки для подключения / потребителя / назначения (не удалось установить пользовательское значение для любого из них).

При копании по исходный код Я обнаружил, что значение предварительной выборки по умолчанию (DEFAULT_CREDITS) установлено на 200.

Для проверки В этом поведении я написал тест, который ставит в очередь 220 сообщений в одной очереди, создает двух получателей, а затем потребляет сообщения. В результате, как и ожидалось, первый потребитель исключил 200 сообщений, а второй - 20 сообщений.

После этого я искал способ установить размер предварительной выборки для моего потребителя без какого-либо успеха, поскольку свойство LinkCredit для ConsumerInfo класс доступен только для чтения.

Поскольку мой сценарий использования требует, чтобы я установил один размер предварительной выборки для соединения, это то, что я попробовал в соответствии с этой страницей документации , но безуспешно. Это URL-адреса, которые я пробовал:

amqps://*my-broker-url*.amazonaws.com:5671?transport.prefetch=50

amqps://*my-broker-url*.amazonaws.com:5671?jms.prefetchPolicy.all=50

amqps://*my-broker-url*.amazonaws.com:5671?jms.prefetchPolicy.queuePrefetch=50

Попробовав все вышеперечисленное, я попытался установить предварительную выборку для пунктов назначения своей очереди, добавив
?consumer.prefetchSize=50 к имени очереди. В результате получается что-то вроде этого:

queue://TestQueue?consumer.prefetchSize=50

Все вышеперечисленные попытки привели к эффективному размеру предварительной выборки 200 (определяется с помощью теста, описанного выше).

Есть ли способ установить пользовательский размер предварительной выборки для подключения при подключении к брокеру с помощью AMQP? Есть ли другой способ настроить брокера, кроме как через параметры запроса, указанные на этой странице документации ?

1 Ответ

1 голос
/ 09 января 2020

Из быстрого прочтения кода в настоящее время нет средств для настройки кредита для потребительской ссылки в реализации клиента NMS.AMQP. Похоже, что это то, что нужно добавить, так как в настоящее время, похоже, просто используется значение по умолчанию для подачи на ссылку получателя AmqpNetLite для автоматического пополнения.

Их репортер проблемы здесь .

...