Laravel项目中使用kafka_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
相关文章