1.   ActiveMQ

1.1. 什么是ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

主要特点:

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

9. 支持与Axis的整合

10. 可以很容易得调用内嵌JMS provider,进行测试

1.2. ActiveMQ的消息形式

对于消息的传递有两种类型:

一种是点对点的,即一个生产者和一个消费者一一对应;

另一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。

JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。

  · StreamMessage -- Java原始值的数据流

  · MapMessage--一套名称-值对

  · TextMessage--一个字符串对象

  · ObjectMessage--一个序列化的 Java对象

  · BytesMessage--一个字节的数据流

2.   ActiveMQ的安装

进入http://activemq.apache.org/下载ActiveMQ

使用的版本是5.12.0

2.1. 安装环境:

1、需要jdk

2、安装Linux系统。生产环境都是Linux系统。

2.2. 安装步骤

第一步: 把ActiveMQ 的压缩包上传到Linux系统。

第二步:解压缩。

第三步:启动。

使用bin目录下的activemq命令启动:

[root@localhost bin]# ./activemq start

关闭:

[root@localhost bin]# ./activemq stop

查看状态:

[root@localhost bin]# ./activemq status

注意:如果ActiveMQ整合spring使用不要使用activemq-all-5.12.0.jar包。建议使用5.11.2

进入管理后台:

http://192.168.25.168:8161/admin

用户名:admin

密码:admin

2.3. 解决405问题:

修改hosts文件,配置机器名和127.0.0.1的映射关系。

机器名:/etc/sysconfig/network文件中定义了机器名:

Host文件的配置:

重新启动Activemq的服务

3.   ActiveMQ的使用方法

3.1. Queue

3.1.1.    Producer

生产者:生产消息,发送端。

把jar包添加到工程中。使用5.11.2版本的jar包。

第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。

第二步:使用ConnectionFactory对象创建一个Connection对象。

第三步:开启连接,调用Connection对象的start方法。

第四步:使用Connection对象创建一个Session对象。

第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。

第六步:使用Session对象创建一个Producer对象。

第七步:创建一个Message对象,创建一个TextMessage对象。

第八步:使用Producer对象发送消息。

第九步:关闭资源。

@Test

public void testQueueProducer() throws Exception {

// 第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。

//brokerURL服务器的ip及端口号

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.168:61616");

// 第二步:使用ConnectionFactory对象创建一个Connection对象。

Connection connection = connectionFactory.createConnection();

// 第三步:开启连接,调用Connection对象的start方法。

connection.start();

// 第四步:使用Connection对象创建一个Session对象。

//第一个参数:是否开启事务。true:开启事务,第二个参数忽略。

//第二个参数:当第一个参数为false时,才有意义。消息的应答模式。1、自动应答2、手动应答。一般是自动应答。

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。

//参数:队列的名称。

Queue queue = session.createQueue("test-queue");

// 第六步:使用Session对象创建一个Producer对象。

MessageProducer producer = session.createProducer(queue);

// 第七步:创建一个Message对象,创建一个TextMessage对象。

/*TextMessage message = new ActiveMQTextMessage();

message.setText("hello activeMq,this is my first test.");*/

TextMessage textMessage = session.createTextMessage("hello activeMq,this is my first test.");

// 第八步:使用Producer对象发送消息。

producer.send(textMessage);

// 第九步:关闭资源。

producer.close();

session.close();

connection.close();

}

3.1.2.    Consumer

消费者:接收消息。

第一步:创建一个ConnectionFactory对象。

第二步:从ConnectionFactory对象中获得一个Connection对象。

第三步:开启连接。调用Connection对象的start方法。

第四步:使用Connection对象创建一个Session对象。

第五步:使用Session对象创建一个Destination对象。和发送端保持一致queue,并且队列的名称一致。

第六步:使用Session对象创建一个Consumer对象。

第七步:接收消息。

第八步:打印消息。

第九步:关闭资源

@Test

public void testQueueConsumer() throws Exception {

// 第一步:创建一个ConnectionFactory对象。

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.168:61616");

// 第二步:从ConnectionFactory对象中获得一个Connection对象。

Connection connection = connectionFactory.createConnection();

// 第三步:开启连接。调用Connection对象的start方法。

connection.start();

// 第四步:使用Connection对象创建一个Session对象。

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 第五步:使用Session对象创建一个Destination对象。和发送端保持一致queue,并且队列的名称一致。

Queue queue = session.createQueue("test-queue");

// 第六步:使用Session对象创建一个Consumer对象。

MessageConsumer consumer = session.createConsumer(queue);

// 第七步:接收消息。

consumer.setMessageListener(new MessageListener() {

@Override

public void onMessage(Message message) {

try {

TextMessage textMessage = (TextMessage) message;

String text = null;

//取消息的内容

text = textMessage.getText();

// 第八步:打印消息。

System.out.println(text);

} catch (JMSException e) {

e.printStackTrace();

}

}

});

//等待键盘输入

System.in.read();

// 第九步:关闭资源

consumer.close();

session.close();

connection.close();

}

3.2. Topic

3.2.1.    Producer

使用步骤:

第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。

第二步:使用ConnectionFactory对象创建一个Connection对象。

第三步:开启连接,调用Connection对象的start方法。

第四步:使用Connection对象创建一个Session对象。

第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Topic对象。

第六步:使用Session对象创建一个Producer对象。

第七步:创建一个Message对象,创建一个TextMessage对象。

第八步:使用Producer对象发送消息。

第九步:关闭资源。

@Test

public void testTopicProducer() throws Exception {

// 第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。

// brokerURL服务器的ip及端口号

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.168:61616");

// 第二步:使用ConnectionFactory对象创建一个Connection对象。

Connection connection = connectionFactory.createConnection();

// 第三步:开启连接,调用Connection对象的start方法。

connection.start();

// 第四步:使用Connection对象创建一个Session对象。

// 第一个参数:是否开启事务。true:开启事务,第二个参数忽略。

// 第二个参数:当第一个参数为false时,才有意义。消息的应答模式。1、自动应答2、手动应答。一般是自动应答。

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个topic对象。

// 参数:话题的名称。

Topic topic = session.createTopic("test-topic");

// 第六步:使用Session对象创建一个Producer对象。

MessageProducer producer = session.createProducer(topic);

// 第七步:创建一个Message对象,创建一个TextMessage对象。

/*

* TextMessage message = new ActiveMQTextMessage(); message.setText(

* "hello activeMq,this is my first test.");

*/

TextMessage textMessage = session.createTextMessage("hello activeMq,this is my topic test");

// 第八步:使用Producer对象发送消息。

producer.send(textMessage);

// 第九步:关闭资源。

producer.close();

session.close();

connection.close();

}

3.2.2.    Consumer

消费者:接收消息。

第一步:创建一个ConnectionFactory对象。

第二步:从ConnectionFactory对象中获得一个Connection对象。

第三步:开启连接。调用Connection对象的start方法。

第四步:使用Connection对象创建一个Session对象。

第五步:使用Session对象创建一个Destination对象。和发送端保持一致topic,并且话题的名称一致。

第六步:使用Session对象创建一个Consumer对象。

第七步:接收消息。

第八步:打印消息。

第九步:关闭资源

@Test

public void testTopicConsumer() throws Exception {

// 第一步:创建一个ConnectionFactory对象。

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.168:61616");

// 第二步:从ConnectionFactory对象中获得一个Connection对象。

Connection connection = connectionFactory.createConnection();

// 第三步:开启连接。调用Connection对象的start方法。

connection.start();

// 第四步:使用Connection对象创建一个Session对象。

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 第五步:使用Session对象创建一个Destination对象。和发送端保持一致topic,并且话题的名称一致。

Topic topic = session.createTopic("test-topic");

// 第六步:使用Session对象创建一个Consumer对象。

MessageConsumer consumer = session.createConsumer(topic);

// 第七步:接收消息。

consumer.setMessageListener(new MessageListener() {

@Override

public void onMessage(Message message) {

try {

TextMessage textMessage = (TextMessage) message;

String text = null;

// 取消息的内容

text = textMessage.getText();

// 第八步:打印消息。

System.out.println(text);

} catch (JMSException e) {

e.printStackTrace();

}

}

});

System.out.println("topic的消费端03。。。。。");

// 等待键盘输入

System.in.read();

// 第九步:关闭资源

consumer.close();

session.close();

connection.close();

}

ActiveMQ介绍及安装的更多相关文章

  1. ActiveMQ (一) 介绍与安装

    ActiveMQ是消息中间件的一种 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...

  2. ActiveMQ学习教程/1.简要介绍与安装

    ActiveMQ学习教程(一)——简要介绍与安装 一.名词: 1.JMS:即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的 ...

  3. ActiveMQ下载与安装(Linux环境下进行)

    下载 官方网站:http:activemq.apache.org/ 安装(liunx) 1.将apache-activemq-5.12.0-bin.tar.gz(liunx环境下的压缩包)上传至服务器 ...

  4. Kafka介绍及安装部署

    本节内容: 消息中间件 消息中间件特点 消息中间件的传递模型 Kafka介绍 安装部署Kafka集群 安装Yahoo kafka manager kafka-manager添加kafka cluste ...

  5. ActiveMQ介绍

    一.背景 中间件 由于业务的不同.技术的发展.硬件和软件的选择有所差别,导致了异构组件或应用并存的局面.要使这些异构的组件协同工作,一个有效的方式就是提供一个允许它们进行通信的层,该层即为中间件. 在 ...

  6. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

  7. 从零自学Hadoop(14):Hive介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...

  8. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  9. Bash on Windows 抢鲜测试 -- 介绍及安装

    前言 微软在上周的Windows BUILD大会上宣布,WIN10将引入原生Bash,并将很快在技术预览版中推出. 如此一来,windows的命令行工具就不再只有cmd和powershell了,我们可 ...

随机推荐

  1. C++ 智能指针一

    /* 智能指针shared_ptr */ #include <iostream> #include <string> #include <memory> //智能指 ...

  2. NoSuchMethodError: ... addOnCompleteCallback

    问题描述: 使用ES 2.3.1和Spark streaming 2.1时,出现以上报错信息. 原因: addOnCompleteCallback方法在spark2.0中移除了 The addOnCo ...

  3. Linux目录详细说明大全(推荐)

    Linux目录详细说明大全,方便你以后合理规划及管理 "/" : 根目录Linux文件系统的入口.也是最高级,最重要的的目录.除衍生出其它目录,还和系统的开机,还原,系统修复有的, ...

  4. laravel 在linux环境下解决.htaccess无效和去除index.php

    LoadModule rewrite_module modules/mod_rewrite.so (去掉前面的#注释) AllowOverride All (根目录的配置下,确保设置成All) < ...

  5. cookie是如何保存到客户端,又是如何发送到服务端

    Cookie相关的Http头     有 两个Http头部和Cookie有关:Set-Cookie和Cookie.     Set-Cookie由服务器发送,它包含在响应请求的头部中.它用于在客户端创 ...

  6. 《objective-c基础教程》学习笔记(二)—— for循环的基本应用

    在上一篇博文中,我们介绍了如何开发前期的准备,以及简单的类型输出实例. 这篇博文,我要记录一个for循环输出的实例.并对此展开,改变成不同的三个小函数. int main(int argc, cons ...

  7. 【JAVA-JDT-AST】Java抽象语法树的构建、遍历及转成dot格式(附Github源码)

    Background: 最近为了重现tree-based clone detection的论文:L. Jiang, G. Misherghi, Z. Su, and S. Glondu. Deckar ...

  8. [原]openstack-kilo--issue(十一)Failed connect to 169.254.169.254:80; No route to host

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. # curl http://169.254.169.254/latest/use ...

  9. ubuntu-16.04更好软件源

    author: headsen chen date:2019-03-06  14:01:07 1,修改软件源文件成如下的清华大学的源(亲测可用) root@ubuntu:/var/lib/apt/li ...

  10. 微信小程序获取到Openid

    前台代码片段 onLoad: function () { wx.login({ success(res) { console.log('code: '+res.code) if (res.code) ...