activeMQ技术分享

来源:互联网 发布:卡通形象制作软件 编辑:程序博客网 时间:2024/05/18 01:17

本次引入ActiveMQ的背景:

ActiveMQ主要解决什么问题:

       在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。比如记录用户的操作日志。这部分就能提出来。操作日志,这种东西,用户也不会马上去看他,为何不用更好的技术,ActiveMQ呢,这样做还节省了服务器请求响应时间。

一、什么是activemq:

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线;速度快,支持多种语言和协议。

ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。

JMS:Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

二、ActiveMQ的特点和优势:

       优点:

             (1)activemq可以很好的运行在任何JVM上,而不只是集成到tomcat(jboss等都行)的应用服务器中;比如jbossmq就只支持jboss。

             (2)activemq支持大量的跨语言客户端(Java,C,C++,C#,Ruby,Perl,Python,PHP)

             (3)activemq支持许多不同的协议(Ajax/REST/Stomp/OpenWire/XMPP)

             (4)activemq支持许多高级功能,例如MessageGroups,ExclusiveConsumer,CompositeDestinations(同一个消息一次发送到多个消息队列)。

             (5)AdvisoryMessage:实现了ActiveMQ的broker上各种操作的记录跟踪和通知。

             (6)activemq支持可靠连接并且具有可配置的自动重连接

             (7)activemq对spring有很好的支持.(文档也比较全面)

             (8)activemq是速度非常快;一般要比jbossmq快10倍

  缺点:

             (1)传输文件不方便,而且效率相对来说不是很高,使用起来也不方便,封装代价高。当然这个缺点对于一个消息总线来说此功能不算最主要的,还在忍受范围内。

             (2)丢消息、但曝光率高、文档全。

三、ActiveMQ支持的数据格式:

JMS规范中的消息类型包括TextMessage、MapMessage、ObjectMessage、BytesMessage、和StreamMessage等五种。

四、ActiveMQ的应用场景

http://blog.csdn.NET/dly1580854879/article/details/68486367

五、ActiveMQ在开发中的使用以及遇到问题的解决:

      1.先来一个demo,感受一下消息的发送与接收的过程:http://blog.csdn.net/dly1580854879/article/details/68488003

问题:

      1.   消息发送失败了怎么办?

            ------重发机制http://blog.csdn.net/dly1580854879/article/details/68489798

      2.   消息消费失败了怎么办?

            ------二次消费,就是捕捉异常,把消息获取过来,重新入队,再消费。

      3.   我怎么样知道消息已经发送成功了?

            ------消息确认http://blog.csdn.net/dly1580854879/article/details/68490197

      4.   同一消息消费多次失败了,怎么办?

            ----进入死信队列、或者重新消费http://blog.csdn.net/dly1580854879/article/details/68946717

      5.   我现在有两个业务的消息,发送到同一个queue,怎么识别出来他们是不同的消息?

           ------给消息做标记

      6.  消息多次消费任然失败,死信队列里面没有东西,什么原因造成的?怎么解决?

            ------没有设置事务、事务回滚操作,这才使得消息消费失败后,直接丢弃。

                 设置事务就能解决此问题。

      7.  怎么样设置事务?

            ----设置事务http://blog.csdn.net/dly1580854879/article/details/68945997

      8.  多个消费者怎么设置?---设置多个消费者

      <!--ActiveMQ:设置多个并行的消费者 -->

      <property name="concurrency"value="2-3" />

六、activeMQ的两种通讯方式:

         publish-subscribe、p2p


原文地址:http://blog.csdn.net/dly1580854879/article/details/70917909