传输方案未识别:[amqp]

Posted

技术标签:

【中文标题】传输方案未识别:[amqp]【英文标题】:Transport scheme NOT recognized: [amqp] 【发布时间】:2013-03-25 04:56:25 【问题描述】:

我正在尝试将 AMQP 与 ActiveMQ 一起使用,但出现以下错误

Transport scheme NOT recognized: [amqp]

这是我的代码

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
        "amqp://localhost:61616");

Connection connection = null;
try 
    connection = connectionFactory.createConnection();
    connection.start();

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

    Queue queue = session.createQueue("somequeue");

    MessageProducer producer = session.createProducer(queue);

    // We will send a small text message saying 'Hello'
    TextMessage message = session.createTextMessage();
    message.setText("Publishing : New Message ");
    producer.send(message);

    connection.close();
 catch (Exception e) 


【问题讨论】:

【参考方案1】:

请注意,ActiveMQ 中的 AMQP 仅在服务器中实现,而不在 JMS 客户端中实现。 JMS 客户端实际上实现了“默认”OpenWire 协议(以及 JVM 内部传输)。

您应该使用其他一些客户端库来使用 AMQP 与 ActiveMQ 通信,例如 Apache QPID 即 recommended by ActiveMQ。

【讨论】:

谢谢!但是你能告诉我如何使用它吗?我尝试了这个但仍然相同的错误 ConnectionFactory connectionFactory = new AMQConnectionFactory("amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'"); 查看 ActiveMQ 主干中的 AMQP 单元测试:fisheye6.atlassian.com/browse/activemq/trunk/activemq-amqp/src/… 它使用 qpid 客户端库进行此设置。 感谢工作代码。一项澄清。我看到这里没有提到任何协议,即我在这里的任何地方都没有 amqp://。我看到 ConnectionFactoryImpl,QueueImpl 来自 org.apache.qpid.amqp_1_0.jms.impl。那么这是否意味着他们只会在 ampq 连接上创建??? AMQP 是一种类似于 OpenWire 的通信协议。 QPID 客户端使用 AMQP,ActiveMQ 客户端使用 OpenWire。无需指定要使用的协议。在 ActiveMQ 中,您通常会指定诸如 tcp:.. 之类的内容,而实际上您的意思是“OpenWire”,但这是隐含的。 代码在本地工作。但是当我在不同的机器上移动 Publisher 和 Receiver 时! ActiveMQ 正在抛出 MessageNotReadableException

以上是关于传输方案未识别:[amqp]的主要内容,如果未能解决你的问题,请参考以下文章

用于识别未标记 mp3 的服务

Mac 上未识别 Ruby 版本

Apple 推送通知 - 提供给包裹的凭据未被识别

开源音频模式识别(指纹)[关闭]

如何在java中识别已检查和未检查的异常?

我应该选择哪种 ActiveMQ 传输?