[关闭]
@aliasliyu4 2017-01-10T09:49:50.000000Z 字数 1122 阅读 1655

mq?

翻阅了一些资料,目前市面上流行的消息队列大概有zeroMQ,robbitMQ, kafka, activeMQ。

zeroMQ

ZeroMQ协议存放在 https://rfc.zeromq.org/spec:8/MMI

feature:

  1. 可以使用任意语言,在任何平台上。
  2. 信息可以负载在ipc,tcp,tipc,多路广播。
  3. 模式匹配比如说pub-sub,push-pull,router-dealer
  4. 高性能的异步io引擎,封装在了一个很小的库里。
  5. 支持所有的现代语言和平台
  6. 构建到多种架构中:中央式,分布式,小型化,或者是大型化。
  7. 社区支持

kafka

基本已经被更强更快更好的robbitMQ给替代了,功能基本相近。

robbitMQ

RabbitMQ是一种消息中间件,能够很好的处理来自客户端的异步消息发送及请求,将消息发送放入到服务端的队列池中,而接收端可以根据RabbitMQ配置的转发机制接收和过滤服务端转发来的消息。RabbitMQ可以根据指定的消息转发规则进行消息的转发、缓冲和持久化操作,这也是其根身立命的地方,但是其诞生的主要目的是为了均衡线程耗时操作的压力,前提是这些操作要满足没有要求即时反应,因为其不适合用在要求即时反应的需求,此时可以考虑使用缓存中间件Redis、Memcache等,另外,RabbitMQ主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统标准的配置。

activeMQ

属于java中JMS的实现。
JMS 定义了两种方式:Quere(点对点);Topic(发布/订阅)。

ConnectionFactory 是连接工厂,负责创建Connection。

Connection 负责创建 Session。

Session 创建 MessageProducer(用来发消息) 和 MessageConsumer(用来接收消息)。

Destination 是消息的目的地。

具体参考JMS的参考文档 ---》http://activemq.apache.org/download.html

redis

不是消息中间件但是可以用来做消息中间件,也就是说redis的list是可以用来做简单的任务队列,可以选择持久化(参考https://redis.io/topics/persistence)。具体队列实现可以参考以下博文:https://lanjingling.github.io/2016/01/29/messagequeue-redis/

golang版本的消息队列

goczmp(https://github.com/zeromq/goczmq)
本质上goczmq是一个zeromq,上层是c语言构建的api,golang调用c code实现了golang版本。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注