2017-01-27 8 views
0

Я использую Spring для настройки сервер Stomp конечных точек (проходящее AbstractWebSocketMessageBrokerConfigurer)Использования RabbitMQ педали эффектов адаптера для передачи сообщения через подписки на разных серверах

@Override 
public void configureMessageBroker(MessageBrokerRegistry config) { 
     config.enableStompBrokerRelay("/topic","/queue") 
     .setRelayHost(<rmqhost>); 
} 
@Override 
public void registerStompEndpoints(StompEndpointRegistry registry) { 
    registry.addEndpoint("/myapp/websockets").setAllowedOrigins("*"); 
} 

Цель состоит в том, что я могу иметь несколько серверов, и клиент будет подключаться любой из них для конкретной темы:/тема/тема-ID-1

любых из сервера (в то время) может отправить сообщение по этой теме с использованием Spring в SimpMessagingTemplate

messagingTemplate.convertAndSend(destination, message); 

где пункт назначения = "/ topic/topic-id-1". Например: у меня есть 2 серверных узла и клиент, подключающийся к каждому из них, подписываясь на одну и ту же тему (/ topic/topic-id-1). Цель состоит в том, что если сервер 1 отправляет сообщение для темы-id-1, он должен передать через rabbitmq оба клиента, подписывающихся на ту же тему. Я вижу, что очередь создается с ключом маршрутизации как «topic-id-1», но только клиент, подключающийся к серверу, отправляющий сообщение, явно принимает его. Я что-то упустил? Разве брокер RMQ stomp не должен передавать сообщение, отправленное одним сервером для подписки, во всех подписках на ту же тему? Нужно ли серверу делать что-то еще, чтобы получать сообщения, отправленные другим узлом?

ответ

0

Я не уверен, что это точно то же самое, но я просто решил очень похожую проблему. Я отправил свой ответ здесь: Sending STOMP messages from other layers of an application

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

Надеюсь, это может пригодиться вам.

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

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