V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
icemanpro
V2EX  ›  PHP

两个 laravel 之间如何用队列通信?

  •  
  •   icemanpro · 2016-09-01 11:10:04 +08:00 · 3447 次点击
    这是一个创建于 3007 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如:
    A laravel 发送消息给第三方队列, B laravel 从队列中获取到 A 发的消息进行处理。
    8 条回复    2016-09-01 15:01:30 +08:00
    wesley
        1
    wesley  
       2016-09-01 11:27:01 +08:00
    laravel A -> Redis -> laravel B
    icemanpro
        2
    icemanpro  
    OP
       2016-09-01 11:36:33 +08:00
    @wesley 试了这方法, A 的消息只有 A 能接收。
    jerray
        3
    jerray  
       2016-09-01 11:38:30 +08:00
    如果直接用 Laravel 的 Queue , Laravel 会把序列化后的任务对象(一般是 Job 或 Event Listener 之类,这里面实际上包含了数据和任务处理器)推到队列里,接收方需要能正确反序列化才能执行。这样就需要两个项目共享代码,可行性不高。
    可以考虑自己实现一套消息队列系统,只把数据入到队列里,接收方根据数据做不同处理。这样可以做到 Laravel -> Queue -> Any 。显然会麻烦很多,可以找找有没有写好的开源实现。
    williamx
        4
    williamx  
       2016-09-01 11:42:15 +08:00
    laravel 文档太简单了,我一直没有悟到队列应该怎么用。
    crazystory
        5
    crazystory  
       2016-09-01 12:19:41 +08:00
    a 只 push 到队列 不进行队列监听 b 用对应配置监听就行了
    crazystory
        6
    crazystory  
       2016-09-01 12:20:26 +08:00
    @crazystory 两边监听的对象要保持一致 否则取出 job 的时候无法反序列化
    Clarencep
        7
    Clarencep  
       2016-09-01 13:03:05 +08:00
    larvel 中一般会配置 redis 的前缀,看看前缀是不一样
    fising
        8
    fising  
       2016-09-01 15:01:30 +08:00
    很简单的应用场景,有啥好讨论的。。。。。。只要 AB 里面都有相同的 Job , 队列使用相同的数据源就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5716 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:04 · PVG 14:04 · LAX 22:04 · JFK 01:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.