【问题标题】:Amqp client not connecting to activemq server.Amqp 客户端未连接到 activemq 服务器。
【发布时间】:2014-12-12 20:16:34
【问题描述】:

我正在尝试使用默认设置从 amqp 客户端连接到 aqtivemq 服务器。它总是给出错误消息说连接被拒绝。然后我用rabbitmq服务器而不是activemq服务器尝试了它,它工作正常。我想知道activemq是否需要一个linux库来通信。

使用的未连接的 Activemq 服务器版本:5.4.2 / 5.10.0 使用的 Rabitmq 版本:3.3.5

rabitmq 示例客户端代码

import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;

public class Cache {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv)
            throws java.io.IOException {

        //creating the connection factory
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");

        //Creating a connection to the server
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        //declaring a queuw
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello World!";

        //publishing the queue the queue
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent '" + message + "'");

        //closing the connection
        channel.close();
        connection.close();
    }
}

以下代码行失败

//Creating a connection to the server
    Connection connection = factory.newConnection();

我该如何解决这个问题?

【问题讨论】:

  • 日志有错误吗?

标签: java rabbitmq activemq


【解决方案1】:

我发现了一个类似的问题,我修复了检查声明的交换是否等于用于发布的频道,这样:

@Test
public void test() throws KeyManagementException, NoSuchAlgorithmException, URISyntaxException, IOException {
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("10.211.55.20");
    factory.setPort(5672);
    factory.setVirtualHost("/");
    factory.setUsername("guest");
    factory.setPassword("guest");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();

    channel.exchangeDeclare("KipcastDirect", "direct", 
           true,    /* durable */
           true,    /* autodelete */
           null);   /* */

    byte[] messageBodyBytes = "Hello, world!".getBytes();

    AMQP.BasicProperties.Builder basic = new AMQP.BasicProperties.Builder();
    AMQP.BasicProperties minBasic = basic.build();

    minBasic = basic.priority(0).deliveryMode(1).build();

    channel.basicPublish("KipcastDirect", "KipcastRouting", minBasic, messageBodyBytes);
    System.out.println(" [x] Sent ");

    channel.close();
}

请注意:Camel Spring DSL 上下文和 JUnit 类上的 URI(从和到)必须引用相同的 Exchange 和队列,以防止回复文本=PRECONDITION_FAILED – vhost '/' 中队列 'QUEUE' 的参数不是等效错误或类似错误。要检查队列/交换配置参数,请使用:

rabbitmqadmin -V / list queue
rabbitmqadmin -V test list exchanges

看看这个:http://www.andreagirardi.it/blog/camel-and-rabbitmq-finally-how-to/

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 2013-12-26
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    相关资源
    最近更新 更多