传输方案未识别:[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]的主要内容,如果未能解决你的问题,请参考以下文章