【问题标题】:Java WSS Connection Could not create transport exceptionJava WSS 连接无法创建传输异常
【发布时间】:2021-05-16 06:57:59
【问题描述】:

我很纠结这个。

我想订阅一个 ActiveMQ 主题。 ActiveMQ 在 Centos 机器上工作,NOCALHOST。我可以使用 tcp、http 协议来使用消息。代码;

public static void main(String[] args) throws JMSException {
    PropertyUtils.loadPropertyFile();
    Properties receiverProperties = PropertyUtils.getreceiverProperties();

    // URL of the JMS server
    String url = (String) receiverProperties.get("receiver.connection.url");

    // Name of the queue we will receive messages from
    String subject = (String) receiverProperties.get("receiver.topic.name");

    // Getting JMS connection from the server
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
    Connection connection = connectionFactory.createConnection();
    connection.start();

    // Creating session for getting messages
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    // Getting the topic
    Destination destination = session.createTopic(subject);

    // MessageConsumer is used for receiving (consuming) messages
    MessageConsumer consumer = session.createConsumer(destination);
    Message message = null;

    // Here we receive the message.
    while (true) {
        message = consumer.receive();
        if (message instanceof TextMessage) {
            TextMessage textMessage = (TextMessage) message;
            System.out.println("Received message '" + textMessage.getText() + "'");
        }
    }

    // We will be using TestMessage in our example. MessageProducer sent us a
    // TextMessage
    // so we must cast to it to get access to its .getText() method.
    // connection.close();
}

我想使用 wss 协议。这对我来说是必须的。当我使用 wss://host:port 更改 url 时;

Could not create Transport. Reason: java.io.IOException: createTransport() method not implemented!

所以我检查了替代方案。人们通过 Stomp over WS 来解决这个问题。我的第一个成就是 wss 连接。

任何推荐将不胜感激!

【问题讨论】:

  • 您是否尝试使用 ActiveMQ JMS 客户端连接到 STOMP 传输连接器?
  • 您将使用什么语言和 STOMP 客户端实现来连接?
  • @TimBish 是的,蒂姆。但这是我的第二个成就。我正在测试所有连接器。首先,我会选择 wss 连接器。
  • @JustinBertram 我将使用 Java。

标签: java activemq stomp


【解决方案1】:

您看到的异常是意料之中的,因为您使用的 OpenWire JMS 客户端不支持 WebSocket 连接,而且它确实不需要。 WebSocket 连接实际上只与在 Web 浏览器等有限环境中运行的客户端相关。 Web 浏览器不支持运行 Java 客户端。

如果你真的想在 WebSockets 上使用 STOMP,那么你必须使用支持 WebSockets 的 STOMP 客户端实现(大多数都这样做)。

请记住,ActiveMQ 是一个代理。它不为它支持的所有协议提供客户端。它只提供了一个 JMS 客户端,因为它是实现 JMS 所必需的。例如,STOMP 是一种标准化协议,任何人都可以实现一个客户端,该客户端将与任何实现 STOMP 的代理一起工作。有许多 STOMP 客户端实现可用许多不同的语言编写,适用于许多不同的平台。任何好的搜索引擎都应该可以帮助您找到适合您需求的搜索引擎。

【讨论】:

  • 我们正在构建一个基于插件的连接器应用程序。从多个来源获取数据。他们给了我这样的信息;我们在这个 {host} 上有一个 ActiveMQ 服务器。您可以使用此网址订阅它。 “wss://主机:端口”。那么我该如何实现呢?因为 ActiveMQ 说他们支持 ws 协议。但找不到任何样本。
  • 我更新了我的答案以解决您的评论。希望有帮助!
  • 感谢您的努力,但我尝试了 stomp 就像在我的问题中编辑的一样。可以查一下吗?
  • 在 Stack Overflow 上,您不能只是继续向现有问题添加问题。每个问题都应该集中在一个问题上,否则它可能会被关闭。我相信我回答了您最初的问题,所以最好用您最新的 STOMP 客户端代码问一个新的
  • 感谢您的启发。参考:stackoverflow.com/questions/66174792/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多