2016-03-04 3 views
7

Могу ли я отправить сообщение брокеру сообщений с использованием методов SimpMessagingTemplate#convertAndSendToUser или SimpMessagingTemplate#convertAndSend без настройки буфера сообщений веб-обозревателя с использованием @EnableWebSocketMessageBroker?Использовать SimpMessagingTemplate, не создавая брокера сообщений веб-сокета Весна 4

То, что я пытаюсь сделать, это использовать один сервер веб-сервера для обеспечения обмена сообщениями для двух экземпляров сервера приложений (одна пружина 4 и одна пружина 3). Я создал один веб-сервер с Spring 4, активирована функция Spring boot plus websocket.

Теперь я хочу, чтобы два сервера приложений отправляли сообщения на rabbitmq, чтобы они передавали их клиентам, подписанным на него.

Первый вопрос, с которым я столкнулся, заключается в отсутствии конфигурации брокера сообщений websockt, SimpMessagingTemplate не будет передаваться в контекст приложения. Я не мог заставить его впрыскиваться, не создавая доску объявлений с веб-сайтами.

Пожалуйста, помогите мне выяснить, возможно ли это.

BTW У меня есть previous question, не имеющий отношения к этому вопросу.

+0

Я думаю, что для отправки сообщений брокеру, как rabbitmq, вы не должны использовать 'SimpMessagingTemplate', а' RabbitTemplate' –

+0

Да, это должен быть общий случай. Мы должны иметь возможность напрямую нажать на очередь rabbitmq. В Spring websocket эта часть была скрыта где-то. Невозможно определить, какие имена очереди и т. Д. Когда настроен брокер сообщений, он предоставляет компонент класса SimpMessagingTemplate и два метода его push-сообщения для брокер-сообщений. –

ответ

1

Ну, прочитав много документации, я нашел ответ сам. Главное в этой архитектуре.

enter image description here

В этой архитектуре пружинной выступают в качестве шлюза для связи между брокером и клиентом сообщения. Spring ничего не делает (кроме случаев, когда это необходимо), но перенаправляет запрос брокеру сообщений (сообщения STOMP). Конфигурация, содержащаяся в Spring, определяет пару важных вещей. Одним из них является обмен, а другие - клавишами маршрутизации. Конфигурация Spring дает нам абстрактный слой, поэтому мы подписываемся и отправляем сообщения брокеру сообщений без суеты.

SimpMessagingTemplate - это абстрактный слой, который мы используем для связи с брокером сообщений. Spring создает компонент, используя данные. Ну, я не смог создать экземпляр SimpMessagingTemplate вручную. Я должен обновить приложение Spring 3 до Spring 4, чтобы использовать веб-узлы.

Поскольку весна и брокер сообщений развязаны, кластеризация экземпляра приложения не оказывает никакого влияния на брокера сообщений. Spring связывается с брокером сообщений только тогда, когда ему необходимо подписаться на канал или когда ему нужно опубликовать сообщение на канал. Так что, если есть два экземпляра, которые подписываются на один и тот же канал, это будет две очереди, связывающие один обмен с использованием того же ключа маршрутизации. Сообщения, опубликованные в канале, будут доступны всем подписчикам (очереди), потому что все они используют один и тот же ключ маршрутизации. Обратитесь к rabbitmq stop plugin documentation за более подробное описание.

 Смежные вопросы

  • Нет связанных вопросов^_^