开源消息总线ActiveMQ

1、消息中间件MOM(Message-Oriented Middleware)java

    消息中间件是解决异步分布式系统中通信和排队问题的中间件技术。它利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通讯来进行分布式系统的集成。经过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通讯。
node

2、JMS
web

    JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通讯。Java消息服务是一个与详细平台无关的API,绝大多数MOM提供商都对JMS提供支持。
ajax


  JMS 定义了两种方式:Quere(点对点);Topic(公布/订阅)。 ConnectionFactory 是链接工厂,负责建立Connection。 Connection 负责建立 Session。  Session 建立 MessageProducer(用来发消息) 和 MessageConsumer(用来接收消息)。  Destination 是消息的目的地。
数据库

3、ActiveMQ浏览器

一、概述网络

    ActiveMQ 则是MOM的一个跨语言跨平台实现,它是Apache出品,最流行的、能力强劲的开源消息总线。它完整实现了JMS1.1和J2EE1.4中JMS服务(JSM定义了MOM系统的服务和接口,可以提供可靠的消息传输、事物和过滤等服务),还具有了集群、事物、存储转发、持久化等企业特性。
架构

二、链接方式
异步

    ActiveMQ提供了丰富链接方式,依照耦合的紧密程度可以分为:直接内嵌于JBoss等J2EE容器,直接利用AMOP、Openwire等标准协议,经过适配器与Java、C++、AJAX等程序链接以及桥式链接其它JMS。socket

三、特性及其做用

处理事务性的消息
    ActiveMQ的此种特性主要管理消息的事务以及消息持久化,即便在出错时也不会漏掉一条消息。消息server需要进行信息持久化,一个server集群可以提升其可用性,ActiveMQ正是这种一个高可用性的消息server,典型的状况就是当一个Server Node掉线的时候,它上面的所有消息都会被保存下来,以便在它又一次上线时继续处理。
高性能的数据分发
    ActiveMQ的这个特性主要关注的是消息的吞吐率以及高效的消息投递路由,中心思想就是在一个大的网络中尽量快的传递大量的并且高速改变的消息数据。
鉴于大量的数据和频繁的数据数据交换负荷很是高,因此这样的状况下很是少使用数据持久化,在失败时丢失几条数据也是可以接受的因为老的数据一般都再也不被需要了,最新的数据才是真正咱们关心的。
集群和通用的异步消息模型
    ActiveMQ的这样的特性重点在网络延迟和速度,当实现一个web或者EJB集群的时候,目的是维护一个node集群,典型的是使用多点广播来discovery&keep-alive而后使用socket直接链接这些node来进行高效的通讯。这和使用JMS provider在EJB-Style或者WS-style的服务中做为RMI层是很是类似的,都能使用多点广播来discovery&keep-alive并且使用socket直接链接通讯以下降延迟。因此与其使用不一样的server来协调client之间的通讯,不如让client直接和彼此通讯来下降延迟。
Ps: 此段主要讲的是activeMQ的node之间会有高效的异步通讯机制,网络延迟小并且高效
网络数据流
    ActiveMQ的这样的特性关注点是activeMQ的ajax支持,愈来愈多的人但愿数据流能实时的传递到网络浏览器中,好比金融行业的股票价格数据,实时的在展现IM会话,实时拍卖并且动态更新内容和消息。鉴于这样的状况,咱们把ActiveMQ集成到了web容器中来提供封闭的网络集成,使用HTTP POSTS来公布消息并且在js中经过HTTP GET来接受并展现消息。
简易的使用HTTP来传递消息的API
    ActiveMQ的这样的特性主要关注跨语言跨技术的链接能力,咱们为message broker提供了一个HTTP接口赞成跨语言或者技术来进行简单的发送和接受消息。使用HTTP POST将消息发送到message broker,使用HTTP GET从message broker获取消息,使用URI并且指定參数来决定接受/发送的目的地。
四、系统架构

    ActiveMQ内部实现採用的是分层和插件相结合的系统架构,从内到外一共可以分为三层,各自是JMS核心层、接口层和插件层。

    JMS核心层:是JMSserver端的实现,完整支持JMS1.1和J2EE1.4规范,可以部署到不论什么兼容J2EE1.4以上的J2EE容器上。

    接口层: 对外提供接口。可以分为通讯接口、消息保存接口和网络服务接口三个子模块。

                     通讯接口负责网络链接和消息传输,经过分布式命令模式解除了消息内容和通讯载体的紧耦合关心,以便于消息在网络中进行传输。它与各类协议插件一块儿完毕消   息在JMSclient与server端和不一样JMS之间的传输,由于插件应用层次的不一样ActiveMQ拥有三种自底向下的网络通讯能力:TCP、UDP、SSL、NIO、JATX等底层络传输;OpenWire、Stomp Rest、WS Notification、XMPP、AMQP等标准协议链路;Java、C、C++、C#、Ruby、Perl、Python、PHP、AJAX等语言级交互通道。

                     消息保存接口可以支持内存、文件、内嵌数据库和外部数据库等四种消息持久化方式。

                     网络服务接口是高级功能的接口,支持存储转发、集群、命令服务等。

    插件层:由不一样的 插件构成向外提供队列、集群等服务。

五、核心数据流

     JMS是发送消息的java中发送消息的中间件,包含5中数据流: · 

      StreamMessage -- Java原始值的数据流 · 

      MapMessage--一套名称-值对 · 

      TextMessage--一个字符串对象 · 

      ObjectMessage--一个序列化的 Java对象 ·

      BytesMessage--一个未解释字节的数据流

相关文章
相关标签/搜索