From caa46f367262635ac1b2e5e2d69c67956b6ad79e Mon Sep 17 00:00:00 2001 From: "jianghang.loujh" Date: Wed, 3 Apr 2024 10:45:29 +0800 Subject: [PATCH] merge pull #5089 --- .../producer/CanalRabbitMQProducer.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/connector/rabbitmq-connector/src/main/java/com/alibaba/otter/canal/connector/rabbitmq/producer/CanalRabbitMQProducer.java b/connector/rabbitmq-connector/src/main/java/com/alibaba/otter/canal/connector/rabbitmq/producer/CanalRabbitMQProducer.java index 486a333c..93347877 100644 --- a/connector/rabbitmq-connector/src/main/java/com/alibaba/otter/canal/connector/rabbitmq/producer/CanalRabbitMQProducer.java +++ b/connector/rabbitmq-connector/src/main/java/com/alibaba/otter/canal/connector/rabbitmq/producer/CanalRabbitMQProducer.java @@ -82,13 +82,18 @@ public class CanalRabbitMQProducer extends AbstractMQProducer implements CanalMQ try { connect = factory.newConnection(); channel = connect.createChannel(); - channel.queueDeclare(rabbitMQProperties.getQueue(), true, false, false, null); - channel.exchangeDeclare(rabbitMQProperties - .getExchange(), rabbitMQProperties.getDeliveryMode(), true, false, false, null); - channel.queueBind(rabbitMQProperties.getQueue(), - rabbitMQProperties.getExchange(), - rabbitMQProperties.getRoutingKey()); - + String queue = rabbitMQProperties.getQueue(); + String exchange = rabbitMQProperties.getExchange(); + String deliveryMode = rabbitMQProperties.getDeliveryMode(); + String routingKey = rabbitMQProperties.getRoutingKey(); + if (!StringUtils.isEmpty(queue)) { + channel.queueDeclare(queue, true, false, false, null); + } + if (!StringUtils.isEmpty(queue) && !StringUtils.isEmpty(exchange) && !StringUtils.isEmpty(deliveryMode) + && !StringUtils.isEmpty(routingKey)) { + channel.exchangeDeclare(exchange, deliveryMode, true, false, false, null); + channel.queueBind(queue, exchange, routingKey); + } } catch (IOException | TimeoutException ex) { throw new CanalException("Start RabbitMQ producer error", ex); }