Как включить несколько буферных каналов в HornetQ

#netty #hornetq

#netty #hornetq

Вопрос:

Я работаю над приложением, в котором много асинхронных сообщений, размещенных в HornetQ 2.3.21. По какому-то процессу размер моего сообщения превышает 2 ГБ, и сообщение начинает завершаться ошибкой с этим сообщением на сервере:

 HQ212017: error adding packet: java.lang.IllegalStateException: Maximum size of 2gb exceeded
   at org.jboss.netty.buffer.DynamicChannelBuffer.ensureWritableBytes(DynamicChannelBuffer.java:82) [netty-3.6.9.Final-redhat-1.jar:3.6.9.Final-redhat-1]
  

Я хочу включить несколько буферных каналов для приложения. Может кто-нибудь, пожалуйста, помочь мне со способом достижения этой цели?

Ответ №1:

Я не верю, что есть какой-либо способ включить «канал с несколькими буферами» в HornetQ. Это похоже на ошибку в HornetQ. Кодовая база HornetQ больше не поддерживается с момента ее передачи сообществу Apache ActiveMQ 6 лет назад. HornetQ по-прежнему имеет открытый исходный код, поэтому вы можете исправлять любые найденные ошибки и создавать свои собственные версии, но я рекомендую вам перейти на ActiveMQ Artemis, который основан на предоставленной базе кода HornetQ.

Комментарии:

1. Маловероятно, что на данный момент мы не можем перейти на ActiveMQ Artemis, но нам нужно будет найти решение в самом HornetQ. Знаете ли вы какой-либо способ установить максимальный размер сообщения или мы можем установить размер, после которого выполняется разбивка на страницы?

2. Что вы подразумеваете под «после чего выполняется разбивка на страницы»? Потенциально вы можете создать «входящий» перехватчик удаленного взаимодействия, чтобы проверить размер сообщения и отклонить его, если оно больше, чем вы хотите.