我在应用程序中使用了Redis's Pub/Sub一点,到目前为止效果很好。我能够将Laravel的发布发布到另一个可以订阅的后端流程,并最终将事件发布回Laravel。
用户的用例如下:
提交表格->等待响应(几分钟)->进行交易
在后端:
表单发布到路由,然后发布到控制器,该控制器将其发布到订阅的第三方(渠道1),最终该第三方发布回去(渠道2)
主要问题:我不知道在哪里订阅(第二频道)并处理在那里发布的内容。
理想情况下,我可以通过两种方式处理发布请求:
让用户知道其表单已被处理,可以继续进行下一步(可能是对Vue组件的属性进行了更新)
将发布中的信息存储到我的数据库中。
在文档中,他们将其包含在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项目中的哪里订阅?是否有应对这些事件的最佳实践?
答案 0 :(得分:0)
Redis::subscribe
用于该示例中的命令中,用于连续监听给定频道。
从文档中
首先,让我们使用subscription方法设置一个频道监听器。因为调用subscribe方法会开始一个长时间运行的过程,所以我们会将这个方法调用放在Artisan命令中:
您将要使用诸如Supervisor或pm2之类的流程管理器运行命令,与文档中描述的运行queue listeners的过程非常相似。