2015-11-03 2 views
3

Я использую Stomp и ActiveMQ для прослушивания сообщений из lan и публикации в каком-либо приложении.Подключить stomp и ActiveMQ с помощью Websocket

Для тестирования я реализовал с использованием подключения протокола tcp, мне нужно использовать протокол Websocket.

Мои ActiveMQ уже настроить на использование WebSocket см код ниже:

<!-- 
    The transport connectors expose ActiveMQ over a given protocol to 
    clients and other brokers. For more information, see: 

    http://activemq.apache.org/configuring-transports.html 
--> 
<transportConnectors> 
    <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --> 
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
    <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
    <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
    <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
    <transportConnector name="ws" uri="ws://0.0.0.0:61623?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> 
</transportConnectors> 

Но если я использую соединение Ws не работает для меня:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH:mm:ss.SSS"); 

String user = env("ACTIVEMQ_USER", "admin"); 
String password = env("ACTIVEMQ_PASSWORD", "password"); 
String host = env("ACTIVEMQ_HOST", "localhost"); 
int port = Integer.parseInt(env("ACTIVEMQ_PORT", "61623")); 
String destination = arg(args, 0, "/topic/event"); 
String protocol = "ws://"; 


StompJmsConnectionFactory factory = new StompJmsConnectionFactory(); 
factory.setBrokerURI(protocol + host + ":" + port); 

Connection connection = factory.createConnection(user, password); 
connection.start(); 
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
Destination dest = new StompJmsDestination(destination); 

MessageConsumer consumer = session.createConsumer(dest); 

Я искал какой-то например, о WS с использованием класса StompJmsConnectionFactory, но только с подключением tcp.

Кто-то уже реализовал что-то вроде этого?

Благодаря

+0

Я не думаю, что StompJMS соединения поддержки WebSocket , Зачем использовать WebSockets для Java-клиента? –

ответ

1

Я использовал ActiveMQ с Stomp и WebSockets, чтобы получить данные из браузера. Конфигурация, которая работала для меня совершенно аналогично, за исключением:

  1. В моем коде я использовал String protocol = "tcp://";. Это брокер сообщений, который взаимодействует с WebSockets (в браузере?). Приложение java связывается с брокером сообщений через tcp.

  2. Я использовал сообщение брокеру двигатель Apollo с этой конфигурацией

    <connector id="tcp" bind="tcp://0.0.0.0:61613" connection_limit="64"> 
    <detect protocols="openwire stomp" /> 
    </connector> 
    <connector id="ws" bind="ws://0.0.0.0:61623" connection_limit="16"> 
    <detect protocols="stomp" /> 
    </connector> 
    
  3. я назвал connection.start(); в конце после MessageConsumer был создан

+0

Спасибо, Манос! –

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