Rabbit MQ Connection Factory Подключение к кластеру с 2 узлами, но с отдельными именами очередей - PullRequest
0 голосов
/ 31 мая 2019

Ниже моя конфигурация Rabbit настроена из моей промежуточной команды.

  1. Кластер, имеющий 2 узла, каждый узел имеет 1 очередь, скажем, Node1 -> Sample.Q1 и Node2 -> Sample.Q2 Очереди, настроенные на 50% нагрузки на стороне кролика.
  2. В основном Sample.Q1 и Sample.Q2 получают сообщения одного типа, но на каждом хосте создаются 2 очереди для большей устойчивости и высокой доступности.
  3. Я попросил их сохранить одну и ту же очередьУзлы, но моя команда промежуточного программного обеспечения подтверждает, что они не могут создавать дублирующиеся очереди в одном кластере.Мой вопрос заключается в том, как весенняя загрузка поддерживает создание фабрики соединений и прослушивателя Rabbit.

У меня есть конфигурация кода, как показано ниже, но это не работает, я знаю, что это не правильно ..


@Bean
    public CachingConnectionFactory subscriberConnectionFactory() {
        CachingConnectionFactory subsCachingConnectionFactory = new CachingConnectionFactory();
        subsCachingConnectionFactory.setAddresses(rabbitMqConfig.getSubscriberAddresses());  // host1:port, host2:port
        subsCachingConnectionFactory.setUsername(rabbitMqConfig.getSubscriberUsername());
        subsCachingConnectionFactory.setPassword(rabbitMqConfig.getSubscriberPassword());
        subsCachingConnectionFactory.setVirtualHost(rabbitMqConfig.getVhost());
        subsCachingConnectionFactory.setConnectionNameStrategy(f -> "subscriberConnection");
        return subsCachingConnectionFactory;
    }

@RabbitListener(id="messageListener",queues = "#{rabbitMqConfig.getSubscriberQueueName()}",containerFactory="queueListenerContainer")
    public void receiveMessage(Message message, Channel channel, @Header("id") String messageId, 
            @Header("amqp_deliveryTag") Long deliveryTag) {

        LOGGER.info(" Message:"+ message.toString());
}

Queues are configured like Sample.Q1, Sample.Q2.
But this is not working.


----------
Error Log:
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'sample.q1,Hydra.clone.q2' in vhost 'Sample.services', class-id=50, method-id=10)
        at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66)
        at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36)
        at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:494)
        at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:288)
        at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:138)
        ... 14 common frames omitted
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'Sample.q1,Sample.q2' in vhost 'Sample.services', class-id=50, method-id=10)
        at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:516)
        at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:346)
        at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:178)
        at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:111)
        at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:670)
        at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:48)
        at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:597)
        ... 1 common frames omitted

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...