我一直有问题配置Kafka和redis一起在拉雷维尔。
我可以运行redis来使用内存数据库。所以redis很好用。
$redis = app()->make('redis');
return $redis->get('name1'); // it runs fine returning value of "name1"
我可以在我的windows系统中配置kafka,在那里我可以在终端中生成和使用消息。
已成功将rdkafka配置为php客户端库和扩展。
我在拉雷维尔为Kafka使用的软件包是 "superbalist/laravel-pubsub": "^3.0", "superbalist/php-pubsub-kafka": "^2.0"
链接
下面提到的代码是订阅和使用消息
$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本地服务器和客户机终端都关闭了,我会得到一个错误
从服务器读取行时出错[tcp://localhost:9092]
请让我知道,如果有人已经能够配置他们都在拉威尔。
1条答案
按热度按时间zd287kbt1#
对subscribe()方法的调用被阻塞,这意味着脚本将永远不会完成,因此您的浏览器永远不会停止加载。
调用subscribe()的php脚本需要从cli运行,而不是从浏览器运行,因为该代码使用kafka消息,并且需要始终处于活动状态。如果要将消息发布到kafka,则需要使用publish()方法。
根据文件: