canal与kafka的配置

总体思想:mysql修改数据通过cannal,然后把消息发送到kafka当中
参考内容:Canal Kafka RocketMQ QuickStart
本文份两块内容:简单实现canal与kafka的配置;跨服务器的远程消费,实现kafka供外网访问(配合java)。

简单实现canal与kafka的配置
0、配置canal,并启canal(双击启动)
canal与kafka的配置_第1张图片
canal与kafka的配置_第2张图片
1、启zookeeper

zookeeper-server-start.bat ..\..\config\zookeeper.properties

2、启kafka

kafka-server-start.bat ..\..\config\server.properties

3、启一个kafka的消费者,并update数据库里的数据

kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic example --from-beginning
UPDATE personinfo SET age =5 WHERE name = '小宝' 

canal与kafka的配置_第3张图片
跨服务器的远程消费,实现kafka供外网访问(配合java):
0、配置kafka:
canal与kafka的配置_第4张图片

1、启动zookeeper、kafka、canal

zookeeper-server-start.bat ..\..\config\zookeeper.properties
kafka-server-start.bat ..\..\config\server.properties

(cannal是双击运行,详情见我前面的帖子)

2、在java中创建程序
a、新建一个ConsumerDemo类

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;

import java.time.Duration;
import java.util.Arrays;
import java.util.Properties;

public class ConsumerDemo {
    public static void main(String[] args) {
        Properties pros=new Properties();
        pros.put("bootstrap.servers","xxx.xx.x.xx:9092");//这里xxx.xx.x.xx要设置成自己的ip地址
        pros.put("group.id","test");//用来表示consumer进程所在组的一个字符串,如果设置同样的group id,表示这些进程都是属于同一个consumer group
        pros.put("enable.auto.commit","true");//如果设置为真,consumer所接收到的消息的offset将会自动同步到zookeeper
        pros.put("auto.commit.interval.ms","1000");//consumer向zookeeper提交offset的频率,单位是秒
        pros.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
        pros.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
        KafkaConsumer consumer= new KafkaConsumer(pros);
        consumer.subscribe(Arrays.asList("example"));
        while(true){
            //ConsumerRecords records = consumer.poll(100);
            ConsumerRecords records = consumer.poll(Duration.ofSeconds(1));
            for (ConsumerRecord record:records){
                System.out.printf("offset= %d ,key= %s ,value= %s%n" ,record.offset(),record.key(),record.value());

            }
        }
    }
}

b、pom.xml添加

        
            org.apache.kafka
            kafka-clients
            2.0.0
        
        
            org.slf4j
            slf4j-nop
            1.7.6
        

3、运行java程序,并update数据库里的数据,结果如下:
canal与kafka的配置_第5张图片
恭喜你,完成啦!

你可能感兴趣的:(知识图谱)