laravel - 在 Laravel 中哪里可以订阅 Redis Pub/Sub?

标签 laravel redis publish-subscribe

我一直在使用 Redis's Pub/Sub在我的应用程序中有一点,到目前为止它一直很棒。我能够从 Laravel 发送一个 Publish 到另一个能够订阅的后端进程,并最终将一个事件发布回 Laravel。

用户的用例如下:

提交表格 -> 等待回复(几分钟) -> 继续交易

在后端:

表单发布到路由,然后发布到 Controller , Controller 将此发布到订阅的第 3 方( channel 一),最终该第 3 方发布回来( channel 二)

主要问题:我不知道订阅(第二 channel )和处理在那里发布的内容的合适位置。

理想情况下,我能够以两种方式处理发布请求:

  1. 让用户知道他们的表单已被处理,他们可以进入下一步(可能更新 Vue 组件的属性)

  2. 将发布的信息存储到我的数据库中。

在文档中,他们将它放在一个命令中,如果我在这里尝试使用它,它看起来像这样:

public function handle()
{
    Redis::subscribe('channel-two', function ($message) {
        // update the client so that the user moves on
        // send $message contents to the database
    });
}

但这对我来说似乎并不理想,因为我希望这个 channel 订阅 24/7,始终收听。即使它在命令中,我仍然很清楚如何最好地更新客户端。

我应该在我的 Laravel 项目中的哪个位置订阅?是否有应对这些事件的最佳做法?

最佳答案

Redis::subscribe 用于类似示例中的命令,用于连续收听给定 channel 。

来自文档:

First, let's setup a channel listener using the subscribe method. We'll place this method call within an Artisan command since calling the subscribe method begins a long-running process:

您需要使用进程管理器(例如 supervisor 或 pm2)来运行该命令,这与文档中描述的运行 queue listeners 非常相似。 .

关于laravel - 在 Laravel 中哪里可以订阅 Redis Pub/Sub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997104/

相关文章:

laravel - laravel事件从 Controller 分派(dispatch)

docker - 为什么redis不能访问docker-compose中的磁盘?

c++ - 无法在 rqt_plugin 中订阅主题

redis - Redis 和 Faye 中的分层 Pub/Sub 和推送通知

php - 使用 Nexmo PHP Laravel 进行 Web 浏览器音频通话

php - 身份验证器登录返回预期响应代码 235,但得到代码 "535",消息为 "535 Incorrect authentication data "

php - 在laravel项目上未定义路线[购物车]

redis - 是否可以对 HASH 的值进行 LIST 操作?

c# - Rx 如何从 pub/sub 模式创建序列

mysql - Laravel Eloquent 地查询聚合值的 groupBy