ActiveMQ——介绍、入门级demo

想要了解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更多的功能,还需要深入的学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容