ActiveMQ介绍(一)

一、JMS(Java Message Service)
  • 1.1、JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。JMS是一种与厂商无关的 API,用来访问消息收发系统。
二、ActiveMQ简介
  • 2.1、ActiveMQ 是Apache旗下,最流行、功能强大的消息中间件。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。
  • 2.2、ActiveMQ特性:
         (1)、多种语言和协议编写客户端。语言: Java, C, C++, C#, ruby, perl, python, php。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP。
         (2)、全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)。
         (3)、对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性。
         (4)、通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上。
         (5)、支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA。
         (6)、支持通过JDBC和journal提供高速的消息持久化。
         (7)、从设计上保证了高性能的集群,客户端-服务器,点对点。
         (8)、 支持Ajax、支持与Axis的整合。
         (9)、可以很容易得调用内嵌JMS provider,进行测试。
三、ActiveMQ安装
  • 3.1、安装前准备
         从 http://activemq.apache.org网站下载最新的ActiveMQ。因为ActiveMQ需要JDK的支持。建议安装jdk1.6版本,并设置好jdk的环境变量。本文中的环境为:
操作系统:SUSE Linux Enterprise Server 9 (x86_64)。JDK:jdk1.6.0_02。ActiveMQ5.5.1.。如图:配置好java环境变量,解压activemq到一个目录,进入bin目录下,执行./activemq start就简单启动了ActiveMQ。

ActiveMQ介绍(一)_第1张图片


启动完成以后,可以访问http://10.0.31.40:8161/admin进入管理界面进行查看。

三、消息传递的两种模型
  • 3.1、PTP模型

        PTP模型是基于队列的,生产者发送消息到队列,消费者从队列接收消息,队列的存在使消息的异步传输成为可能。JMS提供工具管理队列的创建,删除。PTP模型定义了客户端如何向队列发送消息,从队列接受消息,浏览队列中的消息。

  • 3.2、 JMS PUB/SUB模型定义了如何向一个内容节点发布和订阅消息,这些节点被称作主题。主题可以被认为是消息的传输中介,发布者发布消息到主题,订阅者从主题订阅消息。主题使得消息订阅者和消息发布者保持相互独立,不需要接触即可保证消息的传送。

四、开发JMS应用步骤

  • 获取ConnectionFactory对象;
  • ConnectionFactory对象创建Connection对象;
  • Connection对象创建一个或者多个JMS Session;
  • 获取目标队列或者主题对象,即Destination对象;
  • SessionDestination创建MessageProducerMessageConsumer;
  • 通知Connection开始传送消息;
  • 4.1、 ConnectionFactory

     要初始化JMS,需要用到链接工厂。客户端通过创建连接工厂简历到ActiveMQ的连接,一个连接工厂封装了一组连接配置参数,这组参数在配置ActiveMQ时已经定义,例如brokerURL参数,此参数传入的是ActiveMQ服务的地址和端口,支持openwire协议的默认连接为tcp://ip:61616,支持stomp协议的默认连接为tcp://ip:61613。支持并发操作。

     如:ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://10.0.31.40:61616");

  • 4.2、 Connection

     ConnectionJMS定义的一个接口。ConnectionFactory负责返回可以与底层消息传输系统信息通讯的Connection的实现。通常客户端只使用单一的连接。Connection还应该是客户端身份验证的地方。当一个Connection被创建时,传输默认是关闭的,要使用start方法开启,一个connection可以建立一个或者多个session。程序执行完成后,必须关闭之前创建的Connection

         如:Connection conn = cf.createConnection();

  • 4.3、 Session

     可以从Connection创建一个或者多个SessionSession是一个发送或者接收消息的线程。可以使用Session创建MessageProducerMessageConsumerMessageSession可以被事务华,也可以不被事务化,可以通过适当的创建方法对此进行设置。

        如:Session session=conn.createSession(false,Session.AUTO_ACKNOWLEDGE);

      第一个参数为使用事务的标识,第二个 是签收模式
  • 4.4、Destination

     Destination是客户端用来指定生产消息目标和消费 消息来源的对象。在PTP模式中,DestinationQueue即队列;在PUB/SUB模式中,DestinationTopic即主题。程序中可以使用多个QueueTopic

         如:Destination destination = new ActiveMQQueue("testQueue");

  • 4.5、MessageProducer
     MessageProducer 是由 Session 创建的对象,用来向 Destination 发送消息。

         如:MessageProducer producer = session.createProducer(destination);

         发送消息:

         producer.send(message);

  • 4.6、 MessageConsumer
      MessageConsumer 是由 Session 创建的对象,用来从 Destination 接受消息。

         如:MessageConsumer consumer = session.createConsumer(destination);

     接收消息:

    consumer.receive();



你可能感兴趣的:(activemq)