@aliasliyu4
2017-01-10T17:49:50.000000Z
字数 1122
阅读 1744
翻阅了一些资料,目前市面上流行的消息队列大概有zeroMQ,robbitMQ, kafka, activeMQ。
ZeroMQ协议存放在 https://rfc.zeromq.org/spec:8/MMI
feature:
基本已经被更强更快更好的robbitMQ给替代了,功能基本相近。
RabbitMQ是一种消息中间件,能够很好的处理来自客户端的异步消息发送及请求,将消息发送放入到服务端的队列池中,而接收端可以根据RabbitMQ配置的转发机制接收和过滤服务端转发来的消息。RabbitMQ可以根据指定的消息转发规则进行消息的转发、缓冲和持久化操作,这也是其根身立命的地方,但是其诞生的主要目的是为了均衡线程耗时操作的压力,前提是这些操作要满足没有要求即时反应,因为其不适合用在要求即时反应的需求,此时可以考虑使用缓存中间件Redis、Memcache等,另外,RabbitMQ主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统标准的配置。
属于java中JMS的实现。
JMS 定义了两种方式:Quere(点对点);Topic(发布/订阅)。
ConnectionFactory 是连接工厂,负责创建Connection。
Connection 负责创建 Session。
Session 创建 MessageProducer(用来发消息) 和 MessageConsumer(用来接收消息)。
Destination 是消息的目的地。
具体参考JMS的参考文档 ---》http://activemq.apache.org/download.html
不是消息中间件但是可以用来做消息中间件,也就是说redis的list是可以用来做简单的任务队列,可以选择持久化(参考https://redis.io/topics/persistence)。具体队列实现可以参考以下博文:https://lanjingling.github.io/2016/01/29/messagequeue-redis/
goczmp(https://github.com/zeromq/goczmq)
本质上goczmq是一个zeromq,上层是c语言构建的api,golang调用c code实现了golang版本。