Мы изучаем HornetQ уже несколько недель.
В нашем бизнесе много дельта-сообщений, и (к сожалению...) они не версионны (а так как это международный стандарт, они не будут версионированы). Это означает, что отправка одного и того же сообщения дважды, очевидно, осуждается. Тем не менее, стандарт признает, что этого нельзя избежать, и указывает отправителю пометить сообщение как возможный дубликат в этом случае.
Я просмотрел документацию HornetQ, и в ней много говорится о том, как избежать дублирования полученных сервером, но я не смог найти ничего о том, как избежать создания дубликатов.
Чтобы было понятнее, предположим следующую ситуацию:
- 1 главный сервер
- 1 потребитель
В номинальном сценарии потребитель берет сообщение из очереди, отправляет его третьей стороне и, получив подтверждение, передает сообщение на сервер, чтобы оно было удалено из очереди.
Теперь слабым местом здесь является часть ack. Возможно, третья сторона получила и обработала сообщение, но (по какой-то причине) подтверждение не удалось, и сообщение не удалено из очереди.
Я понимаю, что штаб-квартира не может знать, что сообщение было доставлено полностью, однако я ожидаю, что она будет знать, что доставка была уже предпринята и что существует явная вероятность того, что сообщение будет доставлено. быть дубликатом для третьей стороны.
Есть ли способ сообщить Потребителю об этом статусе возможно, уже доставлено, чтобы он мог соответствующим образом пометить сообщение?