登录 qa kafka 集群 Broker 1节点 10.50.1.142,新建如下文件:
cd /opt/app/kafka_2.12-2.5.0/config
vim mirror-maker-consumer.properties
# dev-kafka
bootstrap.servers=10.40.11.91:9092
group.id=mirror-maker
partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor
cd /opt/app/kafka_2.12-2.5.0/config
vim mirror-maker-producer.properties
# qa-kafka
bootstrap.servers=10.50.1.142:9092
执行如下命令,启动kafka mirror maker:
nohup /opt/app/kafka_2.12-2.5.0/bin/kafka-mirror-maker.sh --num.streams 40 --consumer.config /opt/app/kafka_2.12-2.5.0/config/mirror-maker-consumer.properties --producer.config /opt/app/kafka_2.12-2.5.0/config/mirror-maker-producer.properties --whitelist 'zb_test' > /&
# 需要mirrormaker的白名单,可使用正则表达式,也可以直接是某一个具体的主题,对应的是黑名单,–blacklist。
--whitelist 'zb_test'
# 一个流就是一个消费者,所有消费者公用一个生产者。
--num.streams 40
向dev kafka写入数据,脚本如下:
#!/usr/bin/env python
# coding=utf-8
import time
from kafka import KafkaProducer
from kafka.errors import KafkaTimeoutError
def send_message():
producer = KafkaProducer(bootstrap_servers=['10.40.11.91:9092'])
topic = 'zb_test'
msg = bytes('zb_test_message', encoding='utf-8')
while True:
try:
time.sleep(1)
producer.send(topic, msg)
producer.flush()
print("Message Send!")
except KafkaTimeoutError:
print("Kafka Timeout")
if __name__ == '__main__':
send_message()
消费qa kafka写入数据,查看是否有新数据写入,脚本如下:
#!/usr/bin/env python
# coding=utf-8
from kafka import KafkaConsumer
def get_message():
consumer = KafkaConsumer('zb_test', bootstrap_servers=['10.50.1.142:9092'])
for message in consumer:
result = "%s:%d:%d: key=%s value=%s" % (
message.topic, message.partition, message.offset, message.key, message.value)
print(result)
if __name__ == '__main__':
get_message()
经验证,qa kafka可以看到数据同步。