Серверы обмена сообщениями, такие как ActiveMQ, следует рассматривать как критически важную инфраструктуру, аналогичную базам данных, и их следует настраивать с настройкой нескольких серверов / HA, чтобы избежать простоев сервера любой ценой. Однако есть несколько способов смягчить случай простоя. Как буферизация внутренних событий в BlockingQueue
или аналогичном. Этот сценарий будет по-прежнему вызывать потерю сообщения, если приложение будет перезапущено во время простоя ActiveMQ. Чтобы быть уверенным, что никакие данные не будут потеряны, каждое событие должно быть сохранено в базе данных (которая также может быть недоступна) или во встроенном ActiveMQ, тесно связанном с приложением.
Рабочий подход может состоять в том, чтобы настроить привязанный (встроенный) ActiveMQ приложения и сделать так, чтобы приложение записало в него, а затем настроить «Сеть посредников» для удаленного ActiveMQ. Таким образом, приложение всегда будет читать / записывать в локальный ActiveMQ, и сообщения будут передаваться, когда оба экземпляра будут подключены. Это будет работать только до тех пор, пока локально будет свободное дисковое пространство, поэтому вам все еще нужно знать, что делать, когда дерьмо попадает в вентилятор.