2014-01-23 7 views
3

, 우리는 봄 AMQP 이런 식으로 사용하고 있습니다 :선언과 봄 4 RabbitMQ를 사용 WebSocket을 현재의 응용 프로그램에서

내가 모르는 새 봄 4 기반 응용 프로그램에서 웹 소켓을 구성하고
<rabbit:connection-factory id="cachingConnectionFactory" 
          username="${rabbitmq.connection.username}" 
          password="${rabbitmq.connection.password}" 
          host="${rabbitmq.connection.host}" 
          port="${rabbitmq.connection.port}" 
          executor="rabbitmqPoolTaskExecutor" 
          requested-heartbeat="${rabbitmq.connection.requested-heartbeat}" 
          channel-cache-size="${rabbitmq.connection.channel-cache-size}" 
          virtual-host="${rabbitmq.connection.virtual-host}" /> 

<rabbit:admin id="adminRabbit" 
       connection-factory="cachingConnectionFactory" 
       auto-startup="true" /> 

<rabbit:template id="rabbitTemplate" 
        connection-factory="cachingConnectionFactory" 
        exchange="v1.general.exchange" 
        message-converter="jsonMessageConverter" 
        encoding="${rabbitmq.template.encoding}" 
        channel-transacted="${rabbitmq.template.channel-transacted}" /> 

<rabbit:queue id="v1.queue.1" name="v1.queue.1" /> 
<rabbit:queue id="v1.queue.2" name="v1.queue.2" /> 
<rabbit:queue id="v1.queue.3" name="v1.queue.3" /> 

<fanout-exchange name="v1.general.exchange" xmlns="http://www.springframework.org/schema/rabbit" > 
    <bindings> 
     <binding queue="v1.queue.1" /> 
     <binding queue="v1.queue.2" /> 
     <binding queue="v1.queue.3" /> 
    </bindings> 
</fanout-exchange> 

<listener-container xmlns="http://www.springframework.org/schema/rabbit" 
        connection-factory="cachingConnectionFactory" 
        message-converter="jsonMessageConverter" 
        task-executor="rabbitmqPoolTaskExecutor" 
        auto-startup="${rabbitmq.listener-container.auto-startup}" 
        concurrency="${rabbitmq.listener-container.concurrency}" 
        channel-transacted="${rabbitmq.listener-container.channel-transacted}" 
        prefetch="${rabbitmq.listener-container.prefetch}" 
        transaction-size="${rabbitmq.listener-container.transaction-size}" > 

    <listener id="v1.listener.queue.1" ref="listener1" method="handleMessage" queues="v1.queue.1" /> 
    <listener id="v1.listener.queue.2" ref="listener2" method="handleMessage" queues="v1.queue.2" /> 
    <listener id="v1.listener.queue.3" ref="listener3" method="handleMessage" queues="v1.queue.3" /> 

</listener-container> 

<bean id="amqpServerConnection" class="com.sub1.sub2.RabbitGatewayConnectionImpl"> 
    <property name="rabbitTemplate" ref="rabbitTemplate" /> 
</bean> 

어떻게/어디에서 교환, 대기열 등을 선언할까요?

registry.enableStompBrokerRelay("/example1/", "/example2/") 
      .setApplicationLogin("guest") 
      .setApplicationPasscode("guest") 
      .setAutoStartup(true) 
      .setRelayHost("localhost") 
      .setRelayPort(5672) 
      .setSystemHeartbeatReceiveInterval(10000) 
      .setSystemHeartbeatSendInterval(10000); 

이 항목은 AMPQ로 구현해야합니다.

답변

9

기본적으로 클라이언트는 WebSocket 세션을 설정하고 AMQP가 아닌 STOMP (WebSocket을 통한 STOMP) 메시징을 사용합니다. STOMP에서 모든 것은 대상 헤더에 의해 유도되며 메시지 브로커가 의미하는 바를 정의하는 것이 중요합니다. 예를 들어 RabbitMQ STOMP plugin 페이지에서 Rabbit이 STOMP 대상을 대기열 및 교환에 매핑하는 방법을 확인하십시오.

대기열, 교환 등을 이미 관리하고있는 메시지 브로커로 RabbitMQ를 생각하면 메시징 프로토콜은 STOMP이고 클라이언트는 @MessageMapping 컨트롤러 메소드에 매핑 된 STOMP 대상으로 메시지를 보내거나 RabbitMQ가 지원하는 목적지. 또한 컨트롤러 또는 SimpMessagingTemplate이 삽입 된 다른 구성 요소는 브로커 (토끼)에게 메시지를 보내고 연결된 웹 클라이언트에 브로드 캐스트합니다.

희망이 도움이됩니다.