问一个关于 MQ 正确合理使用方式的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
waczx
V2EX    PHP

问一个关于 MQ 正确合理使用方式的问题

  •  
  •   waczx 2016 年 11 月 29 日 3085 次点击
    这是一个创建于 3435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前使用的是 rabbitmq 作为队列服务,比如有系统 A 和 B ,目前使用方式是:
    系统 A 先把消息放在自己的 redis 里面,然后每分钟起脚本,读取( lpop ) 300 条,调 B 系统的 curl 接口;
    系统 B 的接口接到消息,放在自己的 MQ queue 里面,然后起脚本消费 MQ 消息处理

    我倾向的方案:
    按照之前的工作经验,系统 A 和系统 B 共连一个 MQ 地址,定义一个 vhost.exchange.queue_name , A 有消息就朝里面塞, B 可以定时取就可以了啊

    求各位老司机的方案!

    16 条回复    2016-11-29 16:48:18 +08:00
    GOOD21
        1
    GOOD21  
       2016 年 11 月 29 日
    感觉就是一个异步队列模型啊, A 是 Producer , B 是 Consumer 。

    直接 A 发送到 Broker ,然后 B 消费就好了。
    waczx
        2
    waczx  
    OP
       2016 年 11 月 29 日
    @GOOD21 其实目的就是:异步通知 B 系统某个业务状态变化。。
    waczx
        3
    waczx  
    OP
       2016 年 11 月 29 日
    @GOOD21 A 加一个 redis ,我个人觉得会拖垮正常的 redis 服务
    odirus
        4
    odirus  
       2016 年 11 月 29 日
    楼主,本来就是这么做啊。。。
    9hills
        5
    9hills  
       2016 年 11 月 29 日
    奇葩的使用方式。。
    odirus
        6
    odirus  
       2016 年 11 月 29 日
    A 、 B 直连方案对你们来说有任何问题么?安全性 or 其他?
    Ouyangan
        7
    Ouyangan  
       2016 年 11 月 29 日
    没能理解楼主为什么要加一层 redis , 哈哈
    GOOD21
        8
    GOOD21  
       2016 年 11 月 29 日
    @waczx 首先要确认一下是不是内网调用,如果是内网的,完全没必要,直接在 B 起一个 Consumer 的长连接就可以了。
    waczx
        9
    waczx  
    OP
       2016 年 11 月 29 日
    @GOOD21 A 、 B 、 MQ 均是在外网,三个系统间均单独的外网 ip
    waczx
        10
    waczx  
    OP
       2016 年 11 月 29 日
    @odirus 因为内部刚刚使用 MQ
    imaxis
        11
    imaxis  
       2016 年 11 月 29 日
    redis 放中间没啥用?
    waczx
        12
    waczx  
    OP
       2016 年 11 月 29 日
    @imaxis 放中间只作为 push 和 pop ,没有其他作用,有作用的话:作为 A 的队列使用了
    GOOD21
        13
    GOOD21  
       2016 年 11 月 29 日
    @waczx 外网调用 MQ 。。。这个还是比较猛烈的。。。带宽限制太多了。。。

    因为不了解具体业务,从“异步通知 B 系统某个业务状态变化” 和 “ A 、 B 、 MQ 均是在外网,三个系统间均单独的外网 ip ” 来看,其实就是一个简单的 http 调用就好了, A 通过 http 请求 B , B 处理请求。至于 A 、 B 内部的处理逻辑,如果是内网的 MQ 可以用,外网的,就别用了吧。
    waczx
        14
    waczx  
    OP
       2016 年 11 月 29 日
    @GOOD21 AB 直连的话,考虑到了外网:
    1 、 MQ 连接超时,一个在国内,一个在国外
    2 、带宽流量
    GOOD21
        15
    GOOD21  
       2016 年 11 月 29 日
    @waczx 外网的话,你可以理解就是两个公司间的调用了。 MQ 理论上来说应该 A 的内部有一套, B 的内部有一套才是正常的套路。
    deft00
        16
    deft00  
       2016 年 11 月 29 日 via iPhone
    redis 本身也支持发布订阅模式呀
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2738 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 09:48 PVG 17:48 LAX 02:48 JFK 05:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86