У меня есть кластеризованная среда 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