kafka在项目中的使用

本文档详细介绍了如何配置和使用PHP操作Kafka,包括Kafka配置文件的设置,如appid、broker、timeout等参数;创建MQ监控平台topic;数据的生产和消费,以及消费者处理数据的逻辑。同时,展示了如何通过Supervisor来启动和管理Kafka消费进程,确保服务的稳定运行。
摘要由CSDN通过智能技术生成

一、kafka 配置文件

<?php
// 测试topic
$common = [
    "Appid"           => env('WG_APPID', '111'), //appid 网关
    "Appkey"          => env('WG_APPKEY', 'test'), //appkey 网关
    "Proxy"           => env('KAFKA_PROXY', '10.13.1.1:8088'), //网关地址
    "Broker"          => env('KAFKA_BROKER', '10.13.1.2:9091,10.13.1.3:9091,10.13.1.4:9091'), //broker
    "Timeout"         => env('KAFKA_TIMEOUT', 3), //拉取数据超时时间
    "Reset"           => env('KAFKA_RESET', 'earliest'), //失败自动拉取最早的
    "CommitTimeout"   => env('KAFKA_COMMIT_TIMEOUT', 1000),//提交超时时间
    "ConsumerTimeout" => env('KAFKA_CONSUMER_TIMEOUT', 1000),//拉消息时间
    "MaxConsumeTimes" => env('KAFKA_MAX_CONSUMER_TIMES', 2), //最大重试消费次数
    "CommitMode"      => \TestMq\Mq\Consumer::COMMIT_MODE_OFFSET,
    "AutoCommit"      => env('KAFKA_AUTO_COMMIT', 1000),
];

// 回调通知1
$test_notify_1 = $common;
$test_notify_1['Queue'] = 'test_notify_1';
$test_notify_1['Group'] = 'test_notify_1_consumer_group_0';

// 回调通知2
$test_notify_2 = $common;
$test_notify_2['Queue'] = 'test_notify_2';
$test_notify_2['Group'] = 'test_notify_2_consumer_group_0';

return [
    "test_notify_1_producer"    => $test_notify_1,
    "test_notify_1_consumer"    => $test_notify_1,

    "test_notify_2_producer"    => $test_notify_2,
    "test_notify_2_consumer"    => $test_notify_2,
];

二、MQ监控平台,创建topic

  1. 创建主题,填写topic名称,默认参数即可
    在这里插入图片描述
  2. 展示如下
    在这里插入图片描述

三、数据写入生产者

$result = KafkaProducer::push('test_notify_1_producer', $data);
$result = KafkaProducer::push('test_notify_2_producer', $data);

四、消费者处理数据

<?php
/**
 * 回调通知1消费逻辑
 */

namespace App\Exec\Consumer\TestNotify;

use App\Exec\Consumer\KafkaConsumer;

try {
    require_once(dirname(dirname(dirname(__DIR__))) . '/../init.php');
} catch (\Exception $e) {
    echo $e;
}

class TestNotify1 extends KafkaConsumer
{
    public function __construct()
    {
        parent::__construct('test_notify_1_consumer');
    }

    public function handle($msg)
    {
        $this->dealFunc($msg);
        return true;
    }
}

$obj = new TestNotify1();
$obj->start();

五、启动kafka消费进程
1)编辑supervisor配置文件

vim /etc/supervisor/test-consumer.ini
# 回调1
[program:test_notify_1_consumer]
command=/usr/local/php7/bin/php /test/TestNotify1.php
process_name=%(process_num)02d
numprocs=1
priority=1000
autostart=true
startsecs=1
startretries=3
autorestart=true
stopasgroup=true
killasgroup=true
stopsignal=QUIT
stdout_logfile=/var/log/supervisor/test_notify_1_consumer_std.log
stderr_logfile=/var/log/supervisor/test_notify_1_consumer_err.log

# 回调2
[program:test_notify_2_consumer]
command=/usr/local/php7/bin/php /test/TestNotify2.php
process_name=%(process_num)02d
numprocs=1
priority=1000
autostart=true
startsecs=1
startretries=3
autorestart=true
stopasgroup=true
killasgroup=true
stopsignal=QUIT
stdout_logfile=/var/log/supervisor/test_notify_2_consumer_std.log
stderr_logfile=/var/log/supervisor/test_notify_2_consumer_err.log

2)启动supervisor进程

supervisorctl update // 修改配置后,更新启动的进程

3)查看supervisor 进程

supervisorctl status |grep test_notify

显示相应进程即可
MQ监控平台,消费者组列表也能看到对应进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值