Apache ActiveMQ 实践 <一>
一.下载最新版本 ActiveMq
http://activemq.apache.org/activemq-5152-release.html,下载目录如下:
二.创建项目
1.普通项目
添加 jar包
2.Maven项目
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.2</version>
</dependency>
三.代码分析,生产者,消费者 //点对点模式
/**
* 消息生产者
*/
public class JMSProducer { private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; //链接的用户
private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; //链接的密码
private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; //链接的地址,消息总线
private static final int SENDNUM=10;//发送消息的数目 public static void main(String[] args) { ConnectionFactory connectionFactory; //链接工厂
Connection connection = null; //链接
Session session; //会话
Destination destination; //目的地
MessageProducer messageProducer; //消息生产者 //实例化链接工厂
connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL); try {
connection=connectionFactory.createConnection(); //创建链接
connection.start(); //启动链接
session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);//创建会话,设置确认方式
destination=session.createQueue("FirstQueue1");//创建消息队列
messageProducer=session.createProducer(destination); //创建目的地
sendMessage(session, messageProducer); //发送消息
session.commit(); //有事物,需要提交session
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(connection!=null){
try {
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} /**
* 发送消息
*/
public static void sendMessage(Session session,MessageProducer messageProducer)throws Exception{
for(int i=0;i<JMSProducer.SENDNUM;i++){
TextMessage message=session.createTextMessage("ActiveMQ 发送的消息"+i);
System.out.println("发送消息"+"ActiveMQ 发送的消息"+i);
messageProducer.send(message);
}
}
}
//下面是消费者代码,大致相同,我将不同的部分添加了注释,使用监听器的方式,进行消费。
/**
*消息消费者
*/
public class JMSConsumer2 { private static final String USERNAME=ActiveMQConnection.DEFAULT_USER;
private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;
private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; public static void main(String[] args) {
ConnectionFactory connectionFactory;
Connection connection = null;
Session session;
Destination destination;
MessageConsumer messageConsumer; connectionFactory=new ActiveMQConnectionFactory
(JMSConsumer2.USERNAME, JMSConsumer2.PASSWORD, JMSConsumer2.BROKEURL); try {
connection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
destination=session.createQueue("FirstQueue1"); //创建消息队列
messageConsumer=session.createConsumer(destination);//创建消费者
messageConsumer.setMessageListener(new Listener());//注册监听
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//监听器类如下,监听器必须实现MessageListener接口
/**
*监听器
*
*/
public class Listener implements MessageListener{
@Override
public void onMessage(Message message) {
// TODO Auto-generated method stub
try {
System.out.println("监听器:"+((TextMessage)message).getText()); //将消息类型将转为TextMessage,这只是消息类型的一种。
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使用Apache提供的控制台进行测试。
在bin目录下有选择对应的版本进入,启动 activemq.bat ,如下则启动成功。(如果一闪而过,可能是java环境变量没配置)
浏览器访问:http://127.0.0.1:8161/admin/queues.jsp
//运行生产者代码,生产消息
//运行消费者代码消费消息
综合的消息队列中消息的总数,待消费的数量,消费者数量等数据都可以在控制台中观察到。
Apache ActiveMQ 实践 <一>的更多相关文章
- Apache ActiveMQ 实践 <二>
一.订阅/发布模式 1.生产者 /** * 消息生产者 * */public class JMSProducer { private static final String USERNAME=Acti ...
- 消息队列MQ - Apache ActiveMQ
Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件:由于ActiveMQ是一个纯Jave程式,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. 1.que ...
- Apache ActiveMQの版本更迭和Apache ActiveMQの故障转移
本文描述apache activemq 版本更迭的原因以及Apache ActiveMQのThe Failover Transport new features in 5.2.0 1.对信息的传输/ ...
- apache activemq的重连
1.activemq的重连机制 maxReconnectAttempts -1 | 0 From version 5.6 onwards: -1 is default and means retry ...
- apache activemq 学习笔记
0.activemq的概念 activemq实现了jms(java Message server),用于接收,发送,处理消息的开源消息总线. 1.activemq和jms的区别 jms说白了就是jav ...
- How to Setup Replicated LevelDB Persistence in Apache ActiveMQ 5.9--转载
原文地址:https://simplesassim.wordpress.com/2013/11/03/how-to-setup-replicated-leveldb-persistence-in-ap ...
- Apache ActiveMQ消息中间件的基本使用
Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件:由于ActiveMQ是一个纯Java程式,因此只需要操作系统支援Java虚拟机,ActiveMQ便可执行. 支持Jav ...
- Apache ActiveMQ实战(2)-集群
ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这些问题--集群的两种方式: Master slave Broker clusters ActiveMQ的集群有两种方式: ...
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
ActiveMQ简介 ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.ActiveMQ使用Apache ...
随机推荐
- 如何使用共享网卡的NAT模式配置VMware12中的CentOS6.7的上网功能
1.首先共享网卡的NAT模式是通过win10中的VMnet8来通信的,如下双击VMnet8 2.点击[详细信息]查看VMnet8的IPV4地址为192.168.232.110,掩码为255.255.2 ...
- JavaScript 之有趣的函数(函数声明、调用、预解析、作用域)
前言:“函数是对象,函数名是指针.”,函数名仅仅是指向函数的指针,与其他包含函数指针的变量没有什么区别,话句话说,一个函数可能有多个名字. -1.函数声明,function+函数名称.调用方法:函数名 ...
- 源码阅读 - java.util.concurrent (一)
java.util.concurrent这个包大致可以分为五个部分: Aomic数据类型 这部分都被放在java.util.concurrent.atomic这个包里面,实现了原子化操作的数据类型,包 ...
- POJ 3680:Intervals(最小费用最大流)***
http://poj.org/problem?id=3680 题意:给出n个区间[Li,Ri],每个区间有一个权值wi,要使得每个点都不被超过k个区间覆盖(最多能被k个区间覆盖),如果选取了第i个区间 ...
- HDU 3081:Marriage Match II(二分图匹配+并查集)
http://acm.hdu.edu.cn/showproblem.php?pid=3081 题意:有n个男生n个女生,他们只有没有争吵或者女生a与男生A没有争吵,且女生b与女生a是朋友,因此女生b也 ...
- java获取config下文件
private static final String keystore="keystore.jks"; InputStream is=Thread.currentThread() ...
- Maven发布项目到Nexus私服中 (发布jar包)
目录 1 需求说明 2 实现步骤 2.1 Maven服务的setting.xml文件 2.2 项目的pom.xml文件 2.3 发布项目 1 需求说明 开发完项目后, 将项目版本发布到Nexus私服中 ...
- vue中轮播图的实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Oracle数据库---包
--根据员工号或员工姓名获取员工的信息--根据员工号或员工姓名删除员工的信息--创建包规范CREATE OR REPLACE PACKAGE overload_pkgIS FUNCTION get_i ...
- 基于缓存或zookeeper的分布式锁实现
缓存锁 我们常常将缓存作为分布式锁的解决方案,但是却不能单纯的判断某个 key 是否存在 来作为锁的获得依据,因为无论是 exists 和 get 命名都不是线程安全的,都无法保证只有一个线程可以获 ...