Как изменить minLargeMessageSize в ActiveMQ Artemis? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть кластеризованная среда ActiveMQ ARTEMIS с журналированием. Из-за того, что один из потребителей не может использовать Jar-клиент Artemis-JMS, я использую клиентские библиотеки для ActiveMQ 5.11 (Java 1.7) для чтения сообщений. Это отлично работает для небольших сообщений. По какой-то причине потребитель (сторонний продукт) не может читать большие сообщения, если они разделены на части (и переданы в потоковом режиме). Мы имели успех с большими сообщениями в нашей предыдущей среде HornetQ.

Так что моя мысль - найти обходной путь для этого, изменив некоторые параметры. Но у меня нет никакого успеха. Существует ограничение в 100 КиБ (?) Двойных байтов. Как я могу изменить этот лимит до 5 МБ? Могу ли я установить MessageType, разрешенный для определенной очереди? Только TextMessage / ByteMessage?

Я не хочу, чтобы Артемида рассматривала сообщения размером менее 5 МБ как Большие. TextMessage, ByteMessage должно быть в порядке. Не StreamMessage, так как он не поддерживается.

Я видел такие настройки, как: JMS Bridge: min-large-message-Size Limit, прежде чем сообщение будет считаться большим. Тип подключения кластера по умолчанию 100 КБ:

min-large-message-size Сообщения большего размера считаются большими сообщениями, по умолчанию = 100KB

Буду ли я менять его на стороне клиента, как: Из Руководства (Где я могу это сделать и как? Это также кластер)

Использование JMS Если JNDI используется для создания экземпляра и поиска соединения фабрика, минимальный большой размер сообщения настраивается в JNDI контекстная среда, например jndi.properties. Вот простой пример используя фабрику соединений «ConnectionFactory», которая доступна в контекст по умолчанию:

java.naming.factory.initial = org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory connectionFactory.myConnectionFactory = TCP: // локальный: 61616 minLargeMessageSize = 250000 Если непосредственно создается фабрика соединений, минимальное большой размер сообщения определяется ActiveMQConnectionFactory.setMinLargeMessageSize.

Настройка клиента

Любое сообщение, превышающее определенный размер, считается большим сообщением. Большие сообщения будут разбиты и отправлены фрагментами. Это определяется параметром URL minLargeMessageSize

Примечание

** Сообщения Apache ActiveMQ Artemis кодируются с использованием 2 байтов на символ, так что если данные сообщения заполнены символами ASCII (которые составляют 1 байт) размер результирующего Apache ActiveMQ Artemis сообщение примерно удвоится. Это важно при расчете размер «большого» сообщения, так как оно может быть меньше, чем minLargeMessageSize перед отправкой, но затем превращается в «большое» сообщение после его кодирования.

Значение по умолчанию - 100 КБ. **

Настройка транспорта напрямую со стороны клиента обеспечит больше информации о том, как создать базовую фабрику сеансов или JMS фабрика соединений.

Отлично для ваших мыслей.

/ Ziggy

...