У меня есть сообщения в 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();
}
}
}
Вы публикуете одно и то же сообщение в нескольких очередях? Если это так, для этого нужен обмен. И как общая передовая практика, вы всегда должны публиковать на биржах, а не на очереди. – jhilden
Я отправляю все разные сообщения в каждую очередь, вот что я применил к элементу «Entry> entry: queueNameWithMessages'. Спасибо за краткую ссылку на публикацию обмена. Я хочу опубликовать этот путь –
Bharat
Что вы подразумеваете под «сервером выдает исключение, так как пользователь достиг максимального количества разрешенных входных данных». Я не помню, что RabbitMQ имеет такое сообщение об ошибке –