Активные темы ActiveMQ, предварительная подписка на сообщения?

1

В нашем бизнес-требовании нам необходимо передавать обновления нескольким тысячам клиентов, распространяемых по всей стране. Дело в том, что многие из этих клиентов подключаются к нам с использованием сети 3g, поэтому происходит много соединений/разъединений... Обновления, которые нам нужно доставить, такие вещи, как "Enterprise A больше не обналичен", или "Enterprise B" снова обналичить деньги ". Мы думали использовать длительные темы ActiveMQ для доставки этих обновлений. Я понимаю, что когда клиент подключается к долговечной теме, даже если он теряет связь, всякий раз, когда он возвращается, он получает сообщения, отправленные на эту тему, когда он находится в автономном режиме. Большой вопрос в том, что, если клиент начинает нашу систему, но сообщения отправляются на прочную тему, которую он подписывает, до его подписки. Этот случай:

Создана прочная тема
Сообщение 1 отправляется на тему "Долгосрочная тема"
Сообщение 2 отправляется на тему "Долгосрочная тема"
Клиент A подписывается на тему "Долгосрочная тема"
Сообщение 3 отправляется на тему "Долгосрочная тема"
Сообщение 4 отправляется на тему "Долгосрочная тема"
Клиент A отключен
Сообщение 5 отправляется на тему "Долгосрочная тема"
Сообщение 6 отправляется на тему "Долгосрочная тема"
Клиент А выходит в интернет

Согласно документам ActiveMQ, клиент A получит сообщения от 3 до 6 без проблем. Но как насчет сообщений 1 и 2? Мы не можем позволить себе потерять эти сообщения...

Заранее спасибо!

Теги:
activemq
jms-topic

1 ответ

1
Лучший ответ

Как долго должно быть доступно сообщение "1-2". Подумайте о добавлении клиентского подписчика после того, как прошло много лет сообщений. Должны ли все они быть доставлены?

Если вы намерены передать всю историю сообщений новым клиентам, я предлагаю процедуру "начальной загрузки", когда клиент запрашивает историю. Возможно, с помощью ответа на запрос JMS или какой-либо другой функции.

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

Затем вам нужно указать политику восстановления на стороне брокера.

Вы можете восстановить данные по времени, количеству, размеру памяти или тому подобному. См. Параметры и настройки здесь.

Используйте имя назначения, например UPDATE.TOPIC?consumer.retroactive=true чтобы включить эту функцию на стороне клиента.

  • 0
    Спасибо за ответ. У нас есть «начальная загрузка», и обновления не живут долго, самое большее неделю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню