如何使用正确的协议从基于java的程序

时间:2016-11-29 17:53:38

标签: javascript java websocket activemq stomp

我有一个基于JavaScript的活动mq监听器,他正在使用stomp和web套接字。我能够将测试消息发送到活动的mq并接收它们。

我真正想要的是它需要从基于Java的代码发送。

  • 让JavaScript在网络套接字/ stomp上进行监听是否可以 java代码使用tcp?
  • 如果没问题,是否所有端口都相同?

我在使用JavaScript接收数据时遇到问题。但是,我在主动mq.thanks

中看到了主题
function subscribeEndpoint(endpoint){
    var client = Stomp.client("ws://localhost:61614/stomp", "v11.stomp");
    var headers = { id:'JUST.FCX', ack: 'client'};
    client.connect("admin", "admin", function () {
        client.subscribe(endpoint,
             function (message) {
                 alert(message);
             }, headers);
    });
}

Java:

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616/stomp");

// Create a Connection
Connection connection = connectionFactory.createConnection();
connection.start();

// Create a Session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// Create the destination (Topic)
Destination destination = session.createTopic("vrwrThreat");

// Create a MessageProducer from the Session to the Topic or Queue
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

// Create a messages
TextMessage message = session.createTextMessage(text);

producer.send(message);

// Clean up
session.close();
connection.close();

1 个答案:

答案 0 :(得分:1)

客户端可以跨协议和传输机制相互通信而不会出现问题。 WebSocket或任何其他端口(TCP,SSL等)上的STOMP客户端可以发送到主题,只要协议支持消息内容,AMQP,MQTT或OpenWire客户端就可以接收消息,反之亦然AMQP,MQTT或OpenWire发送和STOMP接收的情况。

您提到的案例非常标准。您发布的代码似乎是使用OpenWire客户端发送到主题“vrwrThreat”。连接工厂中使用的URI稍微关闭,因为您添加了无意义的'/ stomp'。由于您要发送到主题,因此需要确保在传输时接收消息的客户端处于活动状态,否则将丢弃该消息。此外,您需要确保两者都在相同的主题上运行,这在您的代码片段中是不明确的。