目前使用的是 rabbitmq 作为队列服务,比如有系统 A 和 B ,目前使用方式是:
系统 A 先把消息放在自己的 redis 里面,然后每分钟起脚本,读取( lpop ) 300 条,调 B 系统的 curl 接口;
系统 B 的接口接到消息,放在自己的 MQ queue 里面,然后起脚本消费 MQ 消息处理
我倾向的方案:
按照之前的工作经验,系统 A 和系统 B 共连一个 MQ 地址,定义一个 vhost.exchange.queue_name , A 有消息就朝里面塞, B 可以定时取就可以了啊
求各位老司机的方案!
1
GOOD21 2016-11-29 15:47:32 +08:00
感觉就是一个异步队列模型啊, A 是 Producer , B 是 Consumer 。
直接 A 发送到 Broker ,然后 B 消费就好了。 |
4
odirus 2016-11-29 15:54:07 +08:00
楼主,本来就是这么做啊。。。
|
5
9hills 2016-11-29 15:54:35 +08:00
奇葩的使用方式。。
|
6
odirus 2016-11-29 15:55:03 +08:00
A 、 B 直连方案对你们来说有任何问题么?安全性 or 其他?
|
7
Ouyangan 2016-11-29 15:55:38 +08:00
没能理解楼主为什么要加一层 redis , 哈哈
|
11
imaxis 2016-11-29 16:05:26 +08:00
redis 放中间没啥用?
|
13
GOOD21 2016-11-29 16:17:15 +08:00
@waczx 外网调用 MQ 。。。这个还是比较猛烈的。。。带宽限制太多了。。。
因为不了解具体业务,从“异步通知 B 系统某个业务状态变化” 和 “ A 、 B 、 MQ 均是在外网,三个系统间均单独的外网 ip ” 来看,其实就是一个简单的 http 调用就好了, A 通过 http 请求 B , B 处理请求。至于 A 、 B 内部的处理逻辑,如果是内网的 MQ 可以用,外网的,就别用了吧。 |
15
GOOD21 2016-11-29 16:34:34 +08:00
@waczx 外网的话,你可以理解就是两个公司间的调用了。 MQ 理论上来说应该 A 的内部有一套, B 的内部有一套才是正常的套路。
|
16
deft00 2016-11-29 16:48:18 +08:00 via iPhone
redis 本身也支持发布订阅模式呀
|