Проверка, сохраняется ли ActiveMQ сообщение после изменения режима доставки сообщения на непостоянный

#activemq

#activemq

Вопрос:

В настоящее время я использую activemq для своего проекта. Проблема, которую я заметил, поскольку тема, которую я использовал в activemq, была постоянной, у меня есть журналы, хранящиеся в kahadb. Я попытался изменить режим доставки сообщения, которое я отправил в тему, как непостоянный. Но поскольку kahadb хранит журналы в двоичном формате, нет способа проверить, сохраняет ли activemq сообщение или нет. Может ли кто-нибудь предложить подходящий способ проверить, было ли сохранено сообщение activemq или нет?

——-Отредактировано после получения решения——
Я использовал хак, чтобы проверить, было ли сохранено сообщение activemq. В моей теме был только один ненадежный подписчик. Я создал постоянного подписчика и оставил его неактивным, когда передавал сообщение в соответствующую тему. Затем я остановил сервер activemq. Если сообщение было сохранено, сообщение снова будет извлечено и появится в очереди ожидания для созданного постоянного подписчика. Это хак, который я использовал, чтобы проверить, сохранялось ли сообщение в теме.

Ответ №1:

Тематические сообщения не сохраняются, если у вас нет долговременной подписки, если у вас есть, вы должны иметь возможность просматривать их с помощью JMX MBeans или через веб-консоль. Сама тема никогда не сохранит свои сообщения в хранилище для случая ненадежного потребителя.

Существует ActiveMQ CLI для экспорта данных из KahaDB, который может помочь вам увидеть, что на самом деле поступает в ваш магазин, если вам действительно нужно все увидеть:

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

1. Спасибо за объяснение. Ваши данные помогли мне выяснить, сохраняется ли сообщение для темы. Хак, за которым я следил, находится в разделе «Отредактированный» моего вопроса. Однако я считаю, что сообщения сохраняются для темы, если режим доставки сообщения установлен на постоянный, независимо от того, что тема имеет только недолговечного подписчика. Просто activemq больше не использует сохраненное сообщение. Пожалуйста, поправьте меня, если я ошибаюсь в этом отношении.

2. Вы ошибаетесь, тематические сообщения отбрасываются, даже не отправляясь на диск, если нет долговременной подписки на эту тему, чтобы направить брокера на их сохранение.

3. Разве постоянство не является свойством отправляемого сообщения? Означает ли это, что разделы в activemq не учитывают свойство сообщения? Извините за такие вопросы, но я новичок в activemq, поэтому мне интересно узнать об этом.

4. Сообщение может быть помечено как постоянное, но если нет ДОЛГОВРЕМЕННОЙ подписки на тему, сообщение будет отправлено, если его никто не получит, независимо от флага persistent, вам нужно понимать разницу между долговременными и непродолжительными подписками на темы.