美文网首页activeMQ
ActiveMQ——介绍、入门级demo

ActiveMQ——介绍、入门级demo

作者: 会点代码的大叔 | 来源:发表于2015-09-17 13:36 被阅读2258次

    想要了解ActiveMQ是啥,首先得知道JMS,所以先对MOM和JMS做一个介绍:

    MOM:企业消息系统,即面向消息的中间件,提供了以松散耦合的灵活方式集成应用程序的一种机制。它们提供了基于存储和转发的应用程序之间的异步数据发送,即应用程序彼此不直接通信,而是与作为中介的MOM通信。

    Java Message Service:是Java平台上有关面向消息中间件的技术规范。

    有一个比较通俗的解释,JMS类似于JDBC,JDBC是可以用来访问许多不同关系数据库的API,而JMS则提供同样与厂商无关的访问的API,以访问消息收发服务。比如IBM 的MQSeries、BEA的Weblogic JMS service;而ActiveMQ也是其中的一种,所以:activeMQ就是支持jms规范的一个server;它对于JDBC和数据库的关系来说,它就是个mysql(MQSeries就是DB2,Weblogic JMS service就是Oracle)。

    在没有JDBC之前,程序员需要访问数据库的时候,需要根据不同的数据库进行不同的编码;在有了JDBC之后,开发过程中,对于不同数据库的访问方法被规范化,只需要根据不同的数据库使用不同的数据库驱动,就可以用通用的方法访问数据库。

    在没有JMS之前,程序员开发过程中,如果需要和MOM进行消息发送或接受的时候,需要根据不同的MOM进行不同的编码;相同的,有了JMS之后,代码被规范。

    这个相当于JMS通讯简单的示意图,应用程序A将Message发送到服务器上,然后应用程序B从服务器中接收A发来的消息。

    当应用程序A发送其消息时,应用程序B甚至可以不处于执行状态。MOM将保留这个消息,直到应用程序B开始执行并试着检索消息为止。这还防止了应用程序A因为等待应用程序B检索消息而出现阻塞。

    另外一个方面,A和B互相不认识,以后A被换成了C,换成了D,数据的来源变了,对B是没有影响的,并且B是不需要做任何改动的。

    当然这只是最基本的一些优点,更多的优点还需要深入的学习。

    知道了JMS和ActiveMQ的概念了,下面对ActiveMQ做一个入门级的demo:

    1.下载ActiveMQ:http://activemq.apache.org/activemq-551-release.html我找的网上的例子做的参考,为了省事儿,我用了和资料里面一样的ActiveMQ版本。

    2.运行ActiveMQ:

    解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。

    运行起来后,可以用IE访问:http://localhost:8161/admin/index.jsp

    然后创建一个Queue,命名为FirstQueue:

    3.创建Eclipse项目并运行

    因为在这里需要有一个消息接收端,一个消息发送端,两个程序都需要运行,我就省事儿开了两个eclipse,不同的workspace。

    创建project:ActiveMQ-5.5,并导入apache-activemq-5.5.1\lib目录下需要用到的jar文件,项目结构如下图所示:

    两个工程都类似。

    4.然后编写代码,一个发送,一个接受:

    Receiver.java

    package com.cn.lw.activemq;

    import javax.jms.Connection;

    import javax.jms.ConnectionFactory;

    import javax.jms.Destination;

    import javax.jms.MessageConsumer;

    import javax.jms.Session;

    import javax.jms.TextMessage;

    import org.apache.activemq.ActiveMQConnection;

    import org.apache.activemq.ActiveMQConnectionFactory;

    public class Receiver {

    public static void main(String[] args) {

    // ConnectionFactory :连接工厂,JMS 用它创建连接

    ConnectionFactory connectionFactory;

    // Connection :JMS 客户端到JMS Provider 的连接

    Connection connection = null;

    // Session: 一个发送或接收消息的线程

    Session session;

    // Destination :消息的目的地;消息发送给谁.

    Destination destination;

    // 消费者,消息接收者

    MessageConsumer consumer;

    connectionFactory = new ActiveMQConnectionFactory(

    ActiveMQConnection.DEFAULT_USER,

    ActiveMQConnection.DEFAULT_PASSWORD,

    "tcp://localhost:61616");

    try {

    // 构造从工厂得到连接对象

    connection = connectionFactory.createConnection();

    // 启动

    connection.start();

    // 获取操作连接

    session = connection.createSession(Boolean.FALSE,

    Session.AUTO_ACKNOWLEDGE);

    // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置

    destination = session.createQueue("FirstQueue");

    consumer = session.createConsumer(destination);

    while (true) {

    //设置接收者接收消息的时间,为了便于测试,这里谁定为100s

    TextMessage message = (TextMessage) consumer.receive(100000);

    if (null != message) {

    System.out.println("收到消息" + message.getText());

    } else {

    break;

    }

    }

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    if (null != connection)

    connection.close();

    } catch (Throwable ignore) {

    }

    }

    }

    }

    Sender.java

    5.先运行,Receiver,java,一运行报错  - -||

    谷歌用不了,勉强用一下百度,查到的结果是少一个jar,果断现在并引入到工程。

    slf4j-nop-1.5.5.jar

    6.再次运行,先接受端,再发送端,成功:

    这些基本都是对网上一些资料的学习和参考,demo比较简单,ActiveMQ更多的功能,还需要深入的学习。

    相关文章

      网友评论

        本文标题:ActiveMQ——介绍、入门级demo

        本文链接:https://www.haomeiwen.com/subject/npjbcttx.html