gpt4 book ai didi

php - 如何在 laravel 项目中使用 kafka 和 redis?

转载 作者:可可西里 更新时间:2023-11-01 11:24:01 26 4
gpt4 key购买 nike

我在 Laravel 中一起配置 Kafka 和 Redis 时遇到问题。

我能够运行 Redis 以使用内存数据库。所以 Redis 工作正常。

$redis = app()->make('redis');
return $redis->get('name1'); // it runs fine returning value of "name1"

我可以在我的 Windows 系统中配置 Kafka,我可以在终端中生成和使用消息。

成功将 Rdkafka 配置为 php 客户端库和扩展。

我在 Laravel 中为 Kafka 使用的包是 "superbalist/laravel-pubsub": "^3.0", "superbalist/php-pubsub-kafka": "^2.0" LINK

下面提到的代码是订阅和消费消息

$pubsub = app('pubsub');
$pubsub->subscribe('test1', function ($message) {
var_dump($message); // the code just stuck here
});

浏览器一直在加载,不会停止。我试图查看供应商内部的代码,但响应是不可理解的。

包要求的我的环境

REDIS_HOST=localhost
REDIS_PASSWORD=null
REDIS_PORT=6379

PUBSUB_CONNECTION=redis

KAFKA_BROKERS=localhost

GOOGLE_CLOUD_PROJECT_ID=your-project-id-here
GOOGLE_CLOUD_KEY_FILE=path/to/your/gcloud-key.json

HTTP_PUBSUB_URI=null
HTTP_PUBSUB_SUBSCRIBE_CONNECTION=redis

如果 Redis 本地服务器和客户端关闭了我得到的错误

Error while reading line from the server [tcp://localhost:9092]

如果有人能够在 laravel 中配置它们,请告诉我。

最佳答案

对 subscribe() 方法的调用是阻塞的,这意味着脚本永远不会完成,因此您的浏览器永远不会停止加载的原因。

调用 subscribe() 的 PHP 脚本需要从 CLI 而不是浏览器运行,因为该代码使用 Kafka 消息并且需要始终处于事件状态。如果你想向 Kafka 发布消息,你需要使用 publish() 方法。

来自文档:

// consume messages
// note: this is a blocking call
$adapter->subscribe('my_channel', function ($message) {
var_dump($message);
});

// publish messages
$adapter->publish('my_channel', 'HELLO WORLD');
$adapter->publish('my_channel', ['hello' => 'world']);
$adapter->publish('my_channel', 1);
$adapter->publish('my_channel', false);

关于php - 如何在 laravel 项目中使用 kafka 和 redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53812837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com