消息队列(一)——消息队列产品

消息队列产品

一、常见消息队列
ActiveMQ:基于JMS
ZeroMQ:基于C语言
RabbitMQ:基于AMQP协议,erlang语言开发,稳定性好
RocketMQ:基于JMS,阿里巴巴产品
Kafka:类似MQ产品,分布式消息系统,高吞吐量

二、RabbitMQ
6种模式:简单模式、工作模式、Publish/Subscribe发布与订阅模式,Routing路由模式,
Topics主题模式,RPC远程调用模式

三、消息队列协议(JMS / AMQP)
在使用消息队列前,我们需要知道两个协议
JMS:基于JVM消息代理的规范。ActiveMQ、HornetMQ是JMS实现
AMQP:高级消息队列协议,也是一个消息代理的规范,兼容JMS,RabbitMQ就是它的实现

JMS(Java消息传递服务Java Messaging Service)
通常指JMS API
JMS是最成功的异步消息传递技术之一。随着Java在许多大型企业应用中的使用,JMS就成为了企业系统的首选。它定义了构建消息传递系统的API。
它的主要特征:
面向Java平台的标准消息传递API
在Java或JVM语言比如Scala、Groovy中具有互用性
无需担心底层协议
有queues和topics两种消息传递模型
支持事务
能够定义消息格式(消息头、属性和内容)

AMQP(高级消息队列协议Advanced Message Queueing Protocol)
JMS虽然好用,但是它只对JAVA语言有用,如果换了语言呢,或需要java发送消息而其他语言接收消息呢,这样就会产生兼容问题。
AMQP解决了这个问题,它使用了一套标准的底层协议,加入了许多其他特征来支持互用性,为现代应用丰富了消息传递需求。
下面是AMQP的主要特性:
独立于平台的底层消息传递协议
消费者驱动消息传递
跨语言和平台的互用性
它是底层协议的
有5种交换类型direct,fanout,topic,headers,system
面向缓存的
可实现高性能
支持长周期消息传递
支持经典的消息队列,循环,存储和转发
支持事务(跨消息队列)
支持分布式事务(XA,X/OPEN,MS DTC)
使用SASL和TLS确保安全性
支持代理安全服务器
元数据可以控制消息流
不支持LVQ
客户端和服务端对等
可扩展
在这里插入图片描述

总结
通常我们还是会选用AMQP协议实现的消息队列,因为兼容性好,而且常用的rabbitMQ就是它的实现之一。当然还是要根据具体业务分析

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值