Laravel项目中使用kafka_laravel-kafka扩展包推荐

2023-06-01 00:00:00 laravel 项目 Kafka

Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使你能够将消息从一个端点传递到另一个端点。 Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。Kafka构建在ZooKeeper同步服务之上。 它与Apache Storm和Spark非常好地集成,用于实时流式数据分析。


Laravel Kafka 是一个用于在 Laravel 应用程序中轻松使用 Apache Kafka 生产者和消费者的软件包。

使用 publishOn 方法,您可以流畅地配置和发布消息负载:

use Junges\Kafka\Facades\Kafka;
 
Kafka::publishOn('broker', 'topic')
    ->withConfigOption('property-name', 'property-value')
    ->withConfigOptions([
        'property-name' => 'property-value'
    ]);


下面是一个示例,说明如何在 Laravel 应用程序中通过此包向 Kafka 发送消息:

use Junges\Kafka\Facades\Kafka;
 
/** @var \Junges\Kafka\Producers\ProducerBuilder $producer */
$producer = Kafka::publishOn('broker', 'topic')
    ->withConfigOptions(['key' => 'value'])
    ->withKafkaKey('your-kafka-key')
    ->withKafkaKey('kafka-key')
    ->withHeaders(['header-key' => 'header-value']);
 
$producer->send();


这是通过消费者订阅消息的示例:

use Junges\Kafka\Facades\Kafka;
 
$consumer = Kafka::createConsumer('broker')->subscribe('topic');
 
// Handler via callback:
$consumer->withHandler(function(\RdKafka\Message $message) {
    // Handle your message here
});
 
// Invokable handler:
class Handler
{
    public function __invoke(\RdKafka\Message $message){
        // Handle your message here
    }
}
 
$consumer->withHandler(Handler::class)


该软件包提供的其他功能如自述文件中所述:

配置要消费的最大消息数
配置死信队列 - 维基百科
配置中间件
Kafka::fake() 
在测试中伪造 Kafka 生产者的方法
在开发过程中启用调试的方法
可配置的消息负载

在后台,这个包需要 rdkafka 扩展,它为 PHP 提供了一个生产就绪、快速的 Kafka 客户端。

您可以了解有关此包的更多信息、获取完整安装说明并查看 GitHub 上的源代码。

https://github.com/mateusjunges/laravel-kafka

相关文章