Связывание rabbitmq не работает с подпружиненной загрузкой - PullRequest
0 голосов
/ 05 марта 2019

с пружинной загрузкой 1.5.9 RELEASE, код как показано ниже

@Configuration
@EnableRabbit
public class RabbitmqConfig {
    @Autowired
    ConnectionFactory connectionFactory;

    @Bean//with or without this bean, neither works
    public AmqpAdmin amqpAdmin() {
        return new RabbitAdmin(connectionFactory);
    }

    @Bean
    public Queue bbbQueue() {
        return new Queue("bbb");
    }

    @Bean
    public TopicExchange requestExchange() {
        return new TopicExchange("request");
    }

    @Bean
    public Binding bbbBinding() {
        return BindingBuilder.bind(bbbQueue())
                .to(requestExchange())
                .with("*");
    }

}

После звездочки баночки сообщение об ошибке отсутствует, и на странице обменов RabbitMQ managementUI (15672) не отображается обмен тем.

Однако, с кодом Python, обмен темами показан и привязка может быть замечена на странице подробного обмена.код Python, как показано ниже

 connection = pika.BlockingConnection(pika.ConnectionParameters(host='10.189.134.47'))
 channel = connection.channel()

 channel.exchange_declare(exchange='request', exchange_type='topic', durable=True)

 result = channel.queue_declare(queue='aaa', durable=True)
 queue_name = result.method.queue

 channel.queue_bind(exchange='aaa', routing_key='*',
                           queue=queue_name)

 print(' [*] Waiting for logs. To exit press CTRL+C')

 def callback(ch, method, properties, body):
        print(" [x] %r" % body)

 channel.basic_consume(callback, queue=queue_name, no_ack=True)

 channel.start_consuming()

1 Ответ

0 голосов
/ 05 марта 2019

Я только что скопировал ваш код, и он отлично работает.

ПРИМЕЧАНИЕ Очередь / привязка не будут объявлены, пока не будет открыто соединение, например, контейнером слушателя, который читает изочередь (или отправка сообщения с RabbitTemplate).

@RabbitListener(queues = "bbb")
public void listen(String in) {
    System.out.println(in);
}

Контейнер должен иметь autoStartup=true (по умолчанию).

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