Я использую 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? Есть ли другой способ настроить брокера, кроме как через параметры запроса, указанные на этой странице документации ?