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

时间:2019-01-01 16:32:30

标签: laravel redis publish-subscribe

我在应用程序中使用了Redis's Pub/Sub一点,到目前为止效果很好。我能够将Laravel的发布发布到另一个可以订阅的后端流程,并最终将事件发布回Laravel。

用户的用例如下:

提交表格->等待响应(几分钟)->进行交易

在后端:

表单发布到路由,然后发布到控制器,该控制器将其发布到订阅的第三方(渠道1),最终该第三方发布回去(渠道2)

主要问题:我不知道在哪里订阅(第二频道)并处理在那里发布的内容。

理想情况下,我可以通过两种方式处理发布请求:

  1. 让用户知道其表单已被处理,可以继续进行下一步(可能是对Vue组件的属性进行了更新)

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

在文档中,他们将其包含在Command中,如果我尝试在此处使用,它将看起来像这样:

$(function() {
controller = new ScrollMagic();
$(".animate").each(function (index, elem) {
    var tween = TweenMax.to(elem, 0.5,
                           {scale: 1.02, backgroundColor: 'rgb(255, 39, 46)' }
                );
    new ScrollScene({
            duration: 200,
            triggerElement: elem,
            triggerHook: "onCenter",
        })
        .setTween(tween)
        .addTo(controller)
        .addIndicators();
});
});

但这对我来说似乎并不理想,因为我希望该频道订阅24/7,并且一直在收听。即使在Command中,也仍然可以明显看出我如何最好地更新客户端。

我应该在Laravel项目中的哪里订阅?是否有应对这些事件的最佳实践?

1 个答案:

答案 0 :(得分:0)

Redis::subscribe用于该示例中的命令中,用于连续监听给定频道。

从文档中

  

首先,让我们使用subscription方法设置一个频道监听器。因为调用subscribe方法会开始一个长时间运行的过程,所以我们会将这个方法调用放在Artisan命令中:

您将要使用诸如Supervisor或pm2之类的流程管理器运行命令,与文档中描述的运行queue listeners的过程非常相似。