#5464·canal

为什么要将点替换为下划线

作者: ckkkf创建于 2025年6月2日更新于 2026年7月26日

问题:为什么要将点替换为下划线

src/main/java/com/alibaba/otter/canal/connector/rabbitmq/producer/CanalRabbitMQProducer.java:

public void send(final MQDestination destination, Message message, Callback callback) {
    ExecutorTemplate template = new ExecutorTemplate(sendExecutor);
    try {
        if (!StringUtils.isEmpty(destination.getDynamicTopic())) {
            // dynamic topic
            Map<String, Message> messageMap = MQMessageUtils.messageTopics(message, destination.getTopic(), destination.getDynamicTopic());

            for (Map.Entry<String, com.alibaba.otter.canal.protocol.Message> entry : messageMap.entrySet()) {
                final String topicName = entry.getKey().replace('.', '_');
                final com.alibaba.otter.canal.protocol.Message messageSub = entry.getValue();

                template.submit(() -> send(destination, topicName, messageSub));
            }

            template.waitForResult();
        } else {
            send(destination, destination.getTopic(), message);
        }
        callback.commit();
    } catch (Throwable e) {
        logger.error(e.getMessage(), e);
        callback.rollback();
    } finally {
        template.clear();
    }
}