Использование надежных подписчиков с виртуальными темами в ActiveMQ и играет ли политика восстановления подписки какую-либо роль?

Я немного запутался здесь о том, как правильно использовать ActiveMQ.

Что я пытаюсь сделать

У меня есть система А, которая выдает сообщения на виртуальную тему. Затем есть системы B и C, которые оба принимают сообщения из одной и той же виртуальной темы. Существует вероятность того, что система B или C может отключиться. Поэтому, когда они возвращаются в онлайн, мне нужно, чтобы они получали все сообщения, которые были созданы в течение периода офлайн.

Что я пробовал до сих пор

Я читал о надежных подписчиках ( http://activemq.apache.org/how-do-durable-queues-and-topics-work.html и Виртуальные темы / очереди и долговечность). Кажется, это соответствует моему описанию проблемы, и после некоторой реализации все, кажется, работает так, как я изначально хотел.

Что создает путаницу

Затем я прочитал о политике восстановления подписок ( http://activemq.apache.org/subscription-recovery-policy.html). Это то, что я должен настроить, или я что-то совершенно неправильно понимаю? Например, если я хочу сохранить указанное количество сообщений, я должен настроить FixedCountSubscriptionRecoveryPolicy или я должен посмотреть на некоторые pendingMessageLimitStrategy?

1 ответ

Решение

Первый вопрос: зачем использовать долговременные подписки на темы в разделе "Тема" виртуальной темы, если основной целью виртуальной темы является публикация в теме (например, VirtualTopic.FOO), а затем создание потребителей очереди с соответствующим значением фильтра (например, "Потребитель".A.VirtualTopic.FOO)?

Что касается политики восстановления, они применимы только к подпискам на темы, которые не совпадают с подписками на долговременные темы. Для простой старой подписки на Тему сообщения, отправляемые в Тему, хранятся в посреднике только для этой подписки, пока она подключена, после удаления все сообщения, которые были в игре для этой подписки, удаляются. Политика восстановления подписки заключается в создании настраиваемого кеша, который позволяет создавать подписку на тему и получать повтор сообщений, отправленных в соответствующую тему. Это не нужно для подписки на Durable Topic, так как сообщение, отправляемое в раздел, на который он подписан, сохраняется в хранилище сообщений посредника всякий раз, когда подписчик находится в автономном режиме.

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

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

Другие вопросы по тегам