rabbitmq(amqp)MQ支持 (#2156)

This commit is contained in:
耐小心
2019-09-16 12:43:02 +08:00
committed by agapple
parent 5ec2087257
commit 79552e0a37
21 changed files with 817 additions and 8 deletions

View File

@@ -69,6 +69,11 @@ public class CanalConstants {
public static final String CANAL_MQ_KAFKA_KERBEROS_ENABLE = ROOT + "." + "mq.kafka.kerberos.enable";
public static final String CANAL_MQ_KAFKA_KERBEROS_KRB5FILEPATH = ROOT + "." + "mq.kafka.kerberos.krb5FilePath";
public static final String CANAL_MQ_KAFKA_KERBEROS_JAASFILEPATH = ROOT + "." + "mq.kafka.kerberos.jaasFilePath";
public static final String CANAL_MQ_USERNAME = ROOT + "." + "mq.username";
public static final String CANAL_MQ_PASSWORD = ROOT + "." + "mq.password";
public static final String CANAL_MQ_VHOST = ROOT + "." + "mq.vhost";
public static final String CANAL_MQ_ALIYUN_UID = ROOT + "." + "mq.aliyunuid";
public static final String CANAL_MQ_EXCHANGE = ROOT + "." + "mq.exchange";
public static String getInstanceModeKey(String destination) {
return MessageFormat.format(INSTANCE_MODE_TEMPLATE, destination);

View File

@@ -11,6 +11,7 @@ import com.alibaba.otter.canal.common.MQProperties;
import com.alibaba.otter.canal.deployer.admin.CanalAdminController;
import com.alibaba.otter.canal.kafka.CanalKafkaProducer;
import com.alibaba.otter.canal.rocketmq.CanalRocketMQProducer;
import com.alibaba.otter.canal.rabbitmq.CanalRabbitMQProducer;
import com.alibaba.otter.canal.server.CanalMQStarter;
import com.alibaba.otter.canal.spi.CanalMQProducer;
@@ -64,6 +65,8 @@ public class CanalStarter {
canalMQProducer = new CanalKafkaProducer();
} else if (serverMode.equalsIgnoreCase("rocketmq")) {
canalMQProducer = new CanalRocketMQProducer();
} else if (serverMode.equalsIgnoreCase("rabbitmq")) {
canalMQProducer = new CanalRabbitMQProducer();
}
if (canalMQProducer != null) {
@@ -260,6 +263,31 @@ public class CanalStarter {
mqProperties.setKerberosJaasFilePath(kafkaKerberosJaasFilepath);
}
String vhost = CanalController.getProperty(properties, CanalConstants.CANAL_MQ_VHOST);
if (!StringUtils.isEmpty(vhost)) {
mqProperties.setVhost(vhost);
}
String username = CanalController.getProperty(properties, CanalConstants.CANAL_MQ_USERNAME);
if (!StringUtils.isEmpty(username)) {
mqProperties.setUsername(username);
}
String password = CanalController.getProperty(properties, CanalConstants.CANAL_MQ_PASSWORD);
if (!StringUtils.isEmpty(password)) {
mqProperties.setPassword(password);
}
String aliyunUID = CanalController.getProperty(properties, CanalConstants.CANAL_MQ_ALIYUN_UID);
if (!StringUtils.isEmpty(aliyunUID)) {
mqProperties.setAliyunUID(Long.valueOf(aliyunUID));
}
String exchange = CanalController.getProperty(properties, CanalConstants.CANAL_MQ_EXCHANGE);
if (!StringUtils.isEmpty(exchange)) {
mqProperties.setExchange(exchange);
}
for (Object key : properties.keySet()) {
key = StringUtils.trim(key.toString());
if (((String) key).startsWith(CanalConstants.CANAL_MQ_PROPERTIES)) {

View File

@@ -130,6 +130,11 @@ canal.mq.producerGroup = test
canal.mq.accessChannel = local
# aliyun mq namespace
#canal.mq.namespace =
canal.mq.vhost=
canal.mq.exchange=
canal.mq.username=
canal.mq.password=
canal.mq.aliyunuid=
##################################################
######### Kafka Kerberos Info #############

View File

@@ -77,7 +77,10 @@
<level value="INFO" />
<appender-ref ref="CANAL-ROOT" />
</logger>
<logger name="com.alibaba.otter.canal.rabbitmq" additivity="false">
<level value="INFO" />
<appender-ref ref="CANAL-ROOT" />
</logger>
<root level="WARN">
<!-- <appender-ref ref="STDOUT"/> -->
<appender-ref ref="CANAL-ROOT" />