广泛使用的三种异步消息传递技术:JMS AMQP MQTT
JMS AMQP MQTT
JMS(Java Message Service):一个类似JDBC的规范,提供了与消息服务相关的API接口
JMS消息模型:
P2P 点对点模型:消息发到一个队列,队列保存的消息只能被一个消费者消费或超时;
publish-subscribe发布订阅模型:消息可被多个消费者消费,生产者和消费者完全独立,不需感知双方存在
JMS消息种类:
TextMessage MapMessage BytesMessage StreanMessage ObjectMessage Message(只有消息头和属性)
JMS实现:ActiveMQ、Redis、HornetMQ、RabbitMQ、RocketMQ(未完全遵守JMS规范)
注:JMS只是一个规范,具体使用依靠具体消息服务商开发的中间件。就像GET/POST传输数据也只是一个约定的规范而已。
考虑了跨平台性和兼容多语言能力:AMQP出现
AMQP(advanced message queuing protocol):一种高级消息队列协议,也是消息代理规范,规范网络交换的数据格式,兼容JMS
优点:具有跨平台性,服务器供应商,生产者,消费者可以使用不同的语言来实现
AMQP消息模型:
direct exchange / fanout exchange / topic exchange / headers exchange / system exchange
AMQP消息种类:byte[]
AMQP实现:RabbitMQ、StormMQ、RocketMQ
注:消息种类,到AMQP都被统一为byte[]字节数组的格式了,因此无论是什么平台,都能用字节的方式,达到跨平台的效果。有种说法是:AMQP规范的是消息传递的格式(协议),JMS规范的是消息开发的API(规范)。
MQTT(Message Queueing Telemetry Transport)消息队列遥测传输:专为小设备设计,是物联网(IOT)生态系 统中主要成分之一,为物联网业务场景的设计逻辑。
常用消息队列服务
ActiveMQ 、RabbitMQ 、RocketMQ 、Kafka 。
下载地址:ActiveMQhttps://activemq.apache.org/components/classic/download/
activemq.bat启动,
默认服务端口:61616,管理后台端口:8161
RabbitMQ下载地址:Installing on Windows — RabbitMQhttps://rabbitmq.com/install-windows.html
默认:服务端口:5672,管理后台端口:15672
# 启动服务
rabbitmq-service.bat start
# 关闭服务
rabbitmq-service.bat stop
# 查看服务状态
rabbitmqctl status
RocketMQ下载地址:
RocketMQ · 官方网站 | RocketMQ官方网站https://rocketmq.apache.org/
默认服务端口:9876
环境变量配置:ROCKETMQ_HOME、PATH、NAMESRV_ADDR
# 启动命名服务器
mqnamesrv
# 启动broker
mqbroker
Kafka下载地址:Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/downloads
启动kafka
kafka-server-start.bat
默认端口:9092