2014-10-17 3 views
0

Я пытаюсь подключиться от клиента amqp к серверу aqtivemq с настройками по умолчанию. Он всегда дает сообщение об ошибке, указывающее, что соединение отклонено. Затем я попробовал его с сервером rabbitmq вместо сервера activemq, и он отлично работает. Интересно, нужна ли для активации Linux-библиотека linux.Клиент Amqp не подключается к серверу activemq.

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(); 

Как я могу решить эту проблему?

+0

Любая ошибка на журнал? –

ответ

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(); 
} 

Пожалуйста carefoul: в URI (от и до) на верблюдах Spring Контекст DSL и класс JUnit должны ссылаться на одни и те же Exchange и Queue, чтобы предотвратить ответ-текст = PRECONDITION_FAILED - параметры для очереди «QUEUE» в ошибке vhost '/', не эквивалентной или аналогичной. Для проверки очередей/обмены конфигурации с помощью параметра:

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

Посмотрите это: http://www.andreagirardi.it/blog/camel-and-rabbitmq-finally-how-to/

Смежные вопросы