之消息中间件一、JMS(JavaMessageService,Java消息服务)1.1定义Java消息服务(JavaMessageService,即JMS)应用程序接口是Java平台API中面向消息的中间件(MOM),用于在两个应用程序之间或在分布式系统中发送消息以进行异步通信。Java消息服务是一个与具体平台无关的API。1.2JMS对象模型名称描述ConnectionFactory连接工厂连接连接会话目的MessageProducerProducerMessageConsumerConsumer消息代理消息中间件实例(ActiveMQ)1.3JMS消息模型点对点(P2P)/点对点发布/订阅(Pub/sub)/topic(发布和订阅)1.4JMS消息结构消息头、消息属性、消息体消息头消息属性:可以理解为消息的附加消息头,属性名可以自定义消息体2.ActiveMQ概念2.1定义ActiveMQ是由Apache出品的最流行、功能最强大的开源消息总线。ActiveMQ是完全支持JMS1.1和J2EE1.4规范的JMSProvider实现。尽管JMS规范已经发布了很长时间,但JMS在今天的J2EE应用程序中仍然扮演着特殊的角色。2.2特性支持多种编程语言支持多种传输协议有多种持久化方式2.3ActiveMQ支持哪些协议ActiveMQ支持多种协议传输和传输方式,允许客户端使用多种协议进行连接。ActiveMQ支持的协议:AUTO、OpenWire、AMQP、Stomp、MQTT等ActiveMQ支持的基本传输方式:VM、TCP、SSL、UDP、Peer、Multicast、HTTP(S)等,以及更高级的Failover、Fanout,Discovery,ZeroConf方法。2.4OpenWire协议2.4.1什么是OpenWire协议OpenWire是Apache的跨语言协议,允许不同语言和平台访问ActiveMQ,是ActiveMQ4.x以后版本的默认传输协议。2.4.2如何使用OpenWire协议OpenWire支持TCP、SSL、NIO、UDP、VM等多种传输方式。直接配置这些连接,就是使用的OpenWire协议。OpenWire有自己的配置参数。由前缀“wireFormat”表示。示例OpenWire配置参数描述属性默认值描述stackTraceEnabledtrue已经发生并被跟踪的堆栈异常是否应该通过Broker发送给客户端reducemarshalling(comingsoon)send)发生tightEncodingEnabledtrue根据CPU使用率,自动调整传输内容的大小(压缩比)prefixPacketSizetrue在每个数据包分组前(立即发送),是否应该使用每个数据包的大小作为前缀连接的最大空闲时间,以毫秒为单位。maxInactivityDuration30000代理服务将根据配置关闭超时连接。同时也可以通过心跳机制保持连接。值<=0将禁用对活动连接的监视。maxlnactivityDurationInitalDelay10000连接建立后,多久开始超时检测?cacheSize1024如果可以缓存,那么这个指定最大缓存个数。在该属性中,在ActiveMQ4.1中增加了可以发送的最大帧大小maxFrameSizeMAX_LONG,可以帮助防止OOMDOS攻击。2.5为什么使用MQTT协议MQTT结构简单,比其他消息协议更轻量。适用于计算能力有限、带宽较低、网络条件不可靠的网络环境中使用。2.5.1MQTT的发布-订阅模型2.5.2MQTT服务质量服务质量(QoS)级别是关于发送方和接收方之间信息传递的保证协议。MQTT中有三个QoS级别:atmostonce(0)atleastonce(1)onlyonce(2)QoS是MQTT的一个主要功能,它可以更轻松地在不可靠的网络下进行通信,因为即使在非常不可靠的网络中网络,协议还可以控制是否重发消息,保证消息到达。它还可以帮助客户端根据网络环境和程序逻辑自由选择QoS。2.5.3ActiveMQ如何使用MQTT协议ActiveMQ服务器配置
