2015-03-24 2 views
0

У меня есть сообщения в Map - key как имя очереди и значение как список сообщений. Всякий раз, когда я публикую несколько сообщений для очереди, сервер генерирует исключение, так как пользователь достиг максимального количества разрешенных входных данных.RabbitMQ: проблема подключения при публикации сообщения в несколько очередей

при публикации сообщений в 1 очередь. Ниже код, который выполняет:

public class MessageManager { 

public static void publish(String exchange, HashMap<String, List<String>> queueNameWithMessages) throws IOException { 
    ... 
    ConnectionFactory factory = new ConnectionFactory(); 
    factory.setHost(Constants.HOST_NAME); 
    factory.setUsername(Constants.USER_NAME); 
    factory.setPassword(Constants.PASSWORD); 
    factory.setPort(Constants.PORT); 
    Connection connection = factory.newConnection(); 
    Channel ch = connection.createChannel(); 
    Channel ch1 = connection.createChannel(); 
    try { 
     for(Entry<String, List<String>> entry : queueNameWithMessages) { 
      String routingKey = entry.getKey(); 
      for(String messageToBeSent : entry.value()) { 
       ch.basicPublish(exchange, routingKey, true, MessageProperties.PERSISTENT_BASIC, messageToBeSent.getValue().getBytes()); 
      } 
      ExecutorService threadExecutor = Executors.newFixedThreadPool(5); 
      String responseKey = props.getProperty(routingKey); 
      if(!CLAMUtility.workingListnerToRespnseQueue.contains(responseKey)) { 
       Worker fast = new Worker(0, threadExecutor, ch1,responseKey, routingKey); 
       CLAMUtility.workingListnerToRespnseQueue.add(responseKey); 
      } 
     } 
     ch.close(); 
     System.out.println("Message published successfully!\n \n"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

+0

Вы публикуете одно и то же сообщение в нескольких очередях? Если это так, для этого нужен обмен. И как общая передовая практика, вы всегда должны публиковать на биржах, а не на очереди. – jhilden

+0

Я отправляю все разные сообщения в каждую очередь, вот что я применил к элементу «Entry > entry: queueNameWithMessages'. Спасибо за краткую ссылку на публикацию обмена. Я хочу опубликовать этот путь – Bharat

+0

Что вы подразумеваете под «сервером выдает исключение, так как пользователь достиг максимального количества разрешенных входных данных». Я не помню, что RabbitMQ имеет такое сообщение об ошибке –

ответ

0

Мы обнаружили, что эта проблема не связана с Rabbit MQ. Потребительская система сообщения имеет некоторые ограничения, связанные с взаимодействием с пользователем, которые не обрабатываются должным образом.

Спасибо!

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