docker启动kafka

直奔主题

docker-composer.yml

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    volumes:
      - ./data:/data
    ports:
      - "2181:2181"
       
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.1.102 
      KAFKA_MESSAGE_MAX_BYTES: 2000000
      KAFKA_CREATE_TOPICS: "Topic1:1:3,Topic2:1:1:compact"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - ./kafka-logs:/kafka
      - /var/run/docker.sock:/var/run/docker.sock
 
  kafka-manager:
    image: sheepkiller/kafka-manager
    ports:
      - 9020:9000
    environment:
      ZK_HOSTS: zookeeper:2181

命令行测试:

1.进入kafka容器、进入命令行目录

docker exec -it 容器Id /bin/bash

#进入到如下目录,进行操作测试

cd /opt/kafka_2.13-2.8.1/bin

2.可通过下面命令进行测试

通过生产者脚本创建test_zp主题,消费者去监听消费。


#生产者
./kafka-console-producer.sh --broker-list localhost:9092 --topic test_zp


#消费者

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_zp --from-beginning


PHP脚本测试:

<?php
$conf = new RdKafka\Conf();
//$conf->set('log_level', LOG_DEBUG);
//$conf->set('debug', 'all');
$rk = new RdKafka\Producer($conf);
$rk->addBrokers("172.30.0.10:9092");
$topic = $rk->newTopic("test_zp");
$topic->produce(RD_KAFKA_PARTITION_UA, 0, "生成的消息");
<?php
$rk = new RdKafka\Consumer();
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("192.168.150.53:9092");
$topic = $rk->newTopic("test_zp");

$topic->consumeStart(0, RD_KAFKA_OFFSET_BEGINNING);
$n = 0;
$curOffset = 11; //业务逻辑处理完成后,更新offset,避免重复处理

while (true) {
    $n++;
    var_dump('rep:' . $n);
    sleep(2);
    if ($n > 20) break;

    $msg = $topic->consume(0, 1000);

	if (null === $msg) {
		continue;
	} elseif ($msg->err) {
		echo $msg->errstr(), "\n";
		break;
	} else {
	    //
        if ($msg->offset > $curOffset) {
            var_dump('is new');
            echo $msg->payload, "\n";
        } else {
            var_dump('is_rep');
            var_dump($msg);
        }
	}
}

die;

好记性不如烂笔头

分享好文:

ubuntu上安卓php-rdkafka可通过此链接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值