#high-availability #spring-websocket #activemq-artemis
#высокая доступность #spring-websocket #activemq-artemis
Вопрос:
Spring WebSockets поддерживает использование внешнего брокера сообщений, такого как ActiveMQ Artemis. Обычно в производственных средах нам нужно, чтобы брокер работал в кластерном режиме. Artemis поддерживает высокую доступность и отказоустойчивость, например, при активно-пассивной настройке, когда только один из экземпляров брокера активен в любое время (в то время как другой экземпляр брокера находится в режиме ожидания).
Согласно документам Spring https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#websocket-stomp-handle-broker-relay-configure , можно WebSocketConfig
настроить поставщика адресов вместо фиксированного хоста и порта, таким образом, косвенно позволяя подключаться к кластеру. Однако этот пример слишком абстрактен, выглядит как ориентированный в основном на сценарии балансировки нагрузки / циклического перебора и ничего не говорит о ReactorNettyTcpClient
поведении, если узел становится недоступным, если возникают тайм-ауты, как он их обрабатывает и т.д.
Итак, мой вопрос: как мы можем правильно настроить WebSockets с помощью ArtemisMQ, работающего в режиме HA, предполагая кластер из 2 узлов в активно-пассивном режиме?