ActiveMQ 分析系列(一)

来源:互联网 发布:js清除所有cookie 编辑:程序博客网 时间:2024/06/13 23:27

一、为什么需要ActiveMQ


    系统发展到一定阶段,特别是用户量上来了、并发量上来了但是硬件还不能马上扩展的情况下,总会在某些环节出现资源瓶颈。仔细分析以后,部分高负荷的业务实际上可以拆分开,由原来的串型任务组分解整几个异步的任务。举个例子来说:用户在网站上下了订单,原来的逻辑是下单的流程中会同时把邮件发出去、库存订单分发出去,而现在可以分解成只生成产品订单,邮件和库存单都通过异步的形式由相应系统去调用。


    问题来了,怎么实现这种需求呢?这时候,引入JMS(Java消息服务(JMS Java Message Services))就很必要了。不同于WebService和RPC(这两者必须是实时的,如果请求未执行完,则会等待),JMS提供异步分流的模式。同时,他是SUN提供的标准,各个第三方厂商通过实现API协议就能非常方便的在J2EE中集成JMS。


    具体的说,JMS提供了点对点模式(Point-to-Point Queue)和发布-订阅模式(Publish-Subscribe Topics)。

Queue仅允许一个消息传送给一个客户(一对一):

    Java消息服务JMS的接收者和发送者之间不存在时间上的依赖关系。不论发送者发送消息时接收者是否在运行,接收者都可以提取信息。接收者对于成功处理的消息给出回执。

Topics可以有多个客户端(一对多,多对多):


    向某个话题订阅的客户程序只能收到那些在它订阅之后发布的消息。为了接收到消息,订阅者必须保持活动状态。因此,发布者和订阅者之间存在时间上的依赖关系。

    点对点消息模式通过一个消息队列(Queue)实现,消息的生产者向队列写入消息,消息的订阅者从队列提取消息。发布-订阅消息模式通过一个话题(Topic)节点构成的层次结构实现,消息的生产者向这个层次结构发布消息,消息的订阅者向这个结构订阅消息。


ActiveMQ支持的特性


   ActiveMQ是目前最流行的开源消息服务中间件,他同时支持跨语言和跨平台。主要的特性包括:

a.提供丰富的客户端语言和协议的支持,包括Java, C, C++, C#, Ruby, Perl, Python, PHP等。
  a1.为客户端语言Java、C、C++、C#提供高性能的OpenWire协议支持
  a2.支持Stomp协议,客户端可以很轻松的通过C, Ruby, Perl, Python, PHP, ActionScript/Flash, Smalltalk等主流语言编写同ActiveMQ服务器通讯的消息代理程序。

b.通过JMS客户端和消息代理方式,支持绝大多数目前流行的企业J2EE集成组件。

c.支持很多高级特性,包括消息群组(Message Groups)、虚拟化目的地( Virtual Destinations)、目的地通配符(Wildcards)、组合目的地等(Composite Destinations)。

d.完美支持JMS1.1 和J2EE1.4规范,包括临时消息(transient)、消息持久化(persistent)、消息事务处理(transactional)、XA messaging等。

e.支持Spring,可通过Spring XML配置机制方便的集成到Spring应用程序中。

f.在主流的J2EE服务器中经过大量的实践测试,包括 TomEE, Geronimo, JBoss, GlassFish , WebLogic等。
  f1.包括JCA1.5(Java Connector Architecture)资源适配器协议的支持:Includes JCA 1.5 resource adaptors for inbound & outbound messaging so that ActiveMQ should auto-deploy in any J2EE 1.4 compliant server

g.支持可拔插式的通信协议支持,包括: in-VM, TCP, SSL, NIO, UDP, multicast, JGroups 和 JXTA transports。

h.支持基于JDBC的快速持久化,以能保证高可用的性能。

i.基于高性能集群、C/S架构、对等通信的设计理念。

j.消息传输可基于REST API以提供技术无关且语言中立的web API。

k.通过Ajax基于纯DHTML为浏览器提供web数据流,以支持将浏览器成为消息结构的一部分:Ajax to support web streaming support to web browsers using pure DHTML, allowing web browsers to be part of the messaging fabric

l.支持CXF和Axis协议,可以降级为webservice服务栈以支持可靠的实时协议。

m.可架构成为基于内存的JMS服务provider


ActiveMQ开始


    今天就从搭建服务开始,入门ActiveMQ吧。

1.首先需要下载ActiveMQ,目前的最新稳定版是5.10。

2.以windows版本为例,解压到任意文件夹下,选择合适的系统版本,执行activeMq.bat,程序就运行了!真是开箱即用呀。(当然你需要java环境)。

3.这时候,访问本地http://localhost:8161/admin/  输入用户名、密码(/conf/users.properties可设置),就可以查看activemq的界面了。

    

4.发送消息所包含的数据大概可以从下面这张页面一览,activeweb管理页面提供了Send标签页,提供消息发送的功能。


使用程序访问


    网上有比较好的hello world,我这就不班门弄斧了。可移步查看

总结

    
    系列第一篇,简单的带过,后续会从他的特性开始分析,在实际中如何使用,从而为工作带来便利。
0 0
原创粉丝点击