ActiveMQ сохраняется на диске только при необходимости
Я использую Java с ActiveMQ для отправки сообщений из Embedded-Linux. Мои требования состоят в том, чтобы сообщения сохранялись, если целевой брокер недоступен. Я выбрал KahaDB в качестве адаптера персистентности, чтобы сообщения выдерживали перезапуск брокера.
broker = new SslBrokerService();
KahaDBPersistenceAdapter kahaDBPersistenceAdapter=new KahaDBPersistenceAdapter();
kahaDBPersistenceAdapter.setJournalMaxFileLength(16 * 1024 * 1024);
broker.setPersistenceAdapter(kahaDBPersistenceAdapter);
/** Connector setup code */
broker.start();
Несмотря на то, что я ограничил максимальный размер файла до 16 МБ, я хотел бы ТОЛЬКО сохранять сообщения, если целевой брокер / потребитель недоступен. Причина этого заключается в ограничении использования процессора и диска. Например: создать сообщение 1, попытаться отправить сообщение. Если успешного сохранения не должно произойти, так как я не заинтересован в повторной отправке уже отправленных данных (или должен происходить только в памяти) . Создайте сообщения 2,3,4, но целевой брокер недоступен, затем сохраните сообщения на диске, так что при маловероятном отключении вспомогательных сообщений они сохранятся.
После просмотра документации ActiveMQ я не нашел никакого ответа для своего варианта использования, поэтому я спрашиваю это большое сообщество, возможно ли то, что я ищу.
1 ответ
Вы должны написать собственный плагин, чтобы получить именно этот сценарий. JMS не описывает вариант использования для сохранения, если только потребитель не доступен, b/c договор о надежности также заключен с производителем. Я думаю, что дизайн магазина и вперед будет то, что вы ищете. Сконфигурируйте встроенный брокер для использования static: networkConnector для отправки его брокеру назначения. ActiveMQ автоматически отправляет сообщения на целевой сервер, когда они доступны, и помещает их в очередь на встроенном сервере, если удаленный посредник недоступен.