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 a75434d4..cb653522 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 @@ -72,12 +72,23 @@ 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); diff --git a/deployer/src/main/resources/canal.properties b/deployer/src/main/resources/canal.properties index e6bdc4cc..f110f734 100644 --- a/deployer/src/main/resources/canal.properties +++ b/deployer/src/main/resources/canal.properties @@ -177,6 +177,7 @@ rabbitmq.exchange = rabbitmq.username = rabbitmq.password = rabbitmq.deliveryMode = +rabbitmq.queue = ##################################################