一.下载最新版本 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 实践 <一>的更多相关文章

  1. Apache ActiveMQ 实践 <二>

    一.订阅/发布模式 1.生产者 /** * 消息生产者 * */public class JMSProducer { private static final String USERNAME=Acti ...

  2. 消息队列MQ - Apache ActiveMQ

    Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件:由于ActiveMQ是一个纯Jave程式,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. 1.que ...

  3. Apache ActiveMQの版本更迭和Apache ActiveMQの故障转移

    本文描述apache activemq 版本更迭的原因以及Apache ActiveMQのThe Failover Transport new features in 5.2.0  1.对信息的传输/ ...

  4. apache activemq的重连

    1.activemq的重连机制 maxReconnectAttempts -1 | 0 From version 5.6 onwards: -1 is default and means retry ...

  5. apache activemq 学习笔记

    0.activemq的概念 activemq实现了jms(java Message server),用于接收,发送,处理消息的开源消息总线. 1.activemq和jms的区别 jms说白了就是jav ...

  6. 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 ...

  7. Apache ActiveMQ消息中间件的基本使用

    Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件:由于ActiveMQ是一个纯Java程式,因此只需要操作系统支援Java虚拟机,ActiveMQ便可执行. 支持Jav ...

  8. Apache ActiveMQ实战(2)-集群

    ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这些问题--集群的两种方式: Master slave Broker clusters ActiveMQ的集群有两种方式: ...

  9. Apache ActiveMQ实战(1)-基本安装配置与消息类型

    ActiveMQ简介 ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.ActiveMQ使用Apache ...

随机推荐

  1. vuex分模块

    Vuex速学篇:(4)把我们的业务按模块分类 原创 2016年11月29日 10:45:38 8504 文档:http://vuex.vuejs.org/zh-cn/modules.html 这个mo ...

  2. 动手写一个简单版的谷歌TPU-指令集

    系列目录 谷歌TPU概述和简化 基本单元-矩阵乘法阵列 基本单元-归一化和池化(待发布) TPU中的指令集 SimpleTPU实例: (计划中) 拓展 TPU的边界(规划中) 重新审视深度神经网络中的 ...

  3. 【微信小程序】记录

    学习新东西时,大体都遵循一样的道理,由总入深. 以下整理一下学习小程序的过程.虽然现在做的东西还有许多问题,比如说数据超过一定数量时循环效率低,或者是多次跳转页面后会变卡等问题.这些问题只解决了部分, ...

  4. Element-ui安装之MessageBox详解

    1.首先根据官方文档进行Element-ui的安装,这个过程很简单(通过webpack-simple) 1) vue init webpack-simple element-ui 2) cd elem ...

  5. .net core 杂记:WebAPI的XML请求和响应

    一般情况下,restfult api  进行数据返回或模型绑定,默认json格式会比较常见和方便,当然偶尔也会需要以XML格式的要求 对于返回XML,普通常见的方式就是在每个aciton方法进行诸如X ...

  6. Asp.net HttpClient Proxy(Fiddler)

    <system.net> <defaultProxy> <proxy bypassonlocal="False" usesystemdefault=& ...

  7. Python的函数, 返回值, 参数

    1. 函数 函数是对功能的封装 语法: def 函数名(形参): 函数体(代码块,return) 调用: 函数名(实参) 2. 返回值 return:在函数执行的时候, 遇到return 就直接返回, ...

  8. 零基础ASP.NET Core MVC插件式开发

    零基础ASP.NET Core MVC插件式开发 一个项目随着业务模块的不断增加,系统会越来越庞大.如果参与开发的人员越多,管理起来也难度也很大.面对这样的情况,首先想到的是模块化插件式开发,根据业务 ...

  9. Oracle数据库---PLSQL

    SET SERVEROUTPUT ONBEGIN --打印输出 DBMS_OUTPUT.PUT_LINE('hello everyone!');END; DECLARE v_name VARCHAR2 ...

  10. 谷歌浏览器 Google Chrome 70.0.3538.102 便携版

    oogle Chrome 是由Google开发的一款设计简单.运行高效.支持扩展的浏览器,它基于高速WebKit/Blink内核和高性能JavaScript V8引擎,在支持多标签浏览的基础上,提供顺 ...