jms - activeMQ入门案例
activeMQ入门案例
叨叨一波,很久没写博客了,最近比较慢,时间抽不出来,这个借口说的很尴尬...我知道作为一名合格的码农就必须养成每天一博客的习惯.希望友友们别像我这样懒,闲话不多时进入今天的主题,理论就不多说了,直接上案例.
1.activemq 是Apache旗下的一个开源的中间件,所以我们先去官网下载解压包,官网地址 : http://activemq.apache.org/activemq-5153-release.html
备注:linux 下载框中的解压包,window就下载箭头指向的.

2.下载后解压,解压后进入到bin目录下,可以看到两个文件夹(win32/win64)是32进32,否则相反

3.进入到对应目录能看到3个后缀为.bat 的可以执行文件,第一个cmd 方式运行,红框中就是activemq启动的端口号,不能关闭窗口,不然服务结束,接着我们测试打开浏览器输入192.168.2.70:8161

3.第二种方式点击第二个.bat 文件则是在本机服务里面启动,就跟mysql服务启动一直,就不再上图.
4.浏览器打开的页面如下,如果没有这个页面证明avtivemq启动错误
5.点击红框会弹出登录信息,初始化账号密码默认为admin admin 进入后就能看到管理页面不在上图
6. 接下来展示下activemq的消息队列案例,工具使用idea 创建maven 项目

依赖包添加好,项目结构也在上面.
7.连接activemq 服务的链接,我是通过CreateQueueConnectionUtil工具类封装好减少代码的溶于,这是开发人员必备的,接下来上代码:
package com.tjl.Util; import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.ActiveMQQueueSession; import javax.jms.*; /**
* Created by tangjialei on 2018/4/13.
* 创建activeme连接
*/
public class CreateQueueConnectionUtil {
private static final String url="tcp://192.168.2.70:61616";//activemq默认端口
private static final String queueName = "queue-test";//提供者名字
private static ConnectionFactory connectionFactory = null;//工厂
private static Connection connection = null;//链接
private static Destination destination = null;//目标
private static Session session = null;//会话 public CreateQueueConnectionUtil() { }
public static Destination getdestination(){
try{
//1.创建ConnectionFactory工厂
connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建连接
connection = connectionFactory.createConnection();
//3.启动链接
connection.start();
//4.创建会话
session =CreateQueueConnectionUtil.getSession();
//5.创建目标
destination = session.createQueue(queueName);
}catch (Exception e){
e.printStackTrace();
}finally {
if(null == destination){
System.out.println("创建destination失败!");
}else{
System.out.println("创建destination成功!");
}
}
return destination;
} public static Session getSession(){
if(session == null){
try{
return connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//应答模式
}catch (JMSException e){
e.printStackTrace();
}
}
return session;
} public static void onClose(){
if(null !=connection){
try{
connection.close();
}catch (JMSException e){
e.printStackTrace();
}
}
}
} 8.我们来看看提供者代码
package com.tjl.jms.queue; import com.tjl.Util.CreateQueueConnectionUtil;
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; /**
* Created by tangjialei on 2018/4/13.
* 主题模式,此类为消息的提供者
*/
public class AppProducer {
private static Session session=null;
public static void main(String[] args) throws JMSException {
//5.创建一个目标
Destination destination = CreateQueueConnectionUtil.getdestination();
//获取session
session = CreateQueueConnectionUtil.getSession();
//创建一个生产者
MessageProducer producer = session.createProducer(destination);
for (int i = 0; i <10 ; i++) {
//7.通过会话创建消息
TextMessage textMessage = session.createTextMessage("hello activrme"+i);
textMessage.setText("我是你第"+i+"个爸爸");
//8.发送消息
producer.send(textMessage);//生产者向服务生产消息
System.out.println("发送消息" + textMessage.getText());
} //9.关闭连接
CreateQueueConnectionUtil.onClose();
}
}
9.接着上消费者代码:
package com.tjl.jms.queue; import com.tjl.Util.CreateQueueConnectionUtil; import javax.jms.*; /**
* Created by tangjialei on 2018/4/13.
* 主题模式:消费者(消费activemq)
*/
public class AppConsumer {
private static Session session;
public static void main(String[] args) throws JMSException {
//创建去哪个服务消费目标
Destination destination = CreateQueueConnectionUtil.getdestination();
//获取session
session = CreateQueueConnectionUtil.getSession();
//创建一个消费者MessageConsumer
MessageConsumer consumer = session.createConsumer(destination);
//创建一个监听器
consumer.setMessageListener(new MessageListener() {//MessageListener消息监听
public void onMessage(Message message) {//异步回调函数
TextMessage textMessage = (TextMessage) message;
try{
System.out.println("我是消费者我接收到消息" + textMessage.getText());
}catch (JMSException e){
e.printStackTrace();
}
}
});
}
} 代码上完我们开始看运行效果
提供者运行图

接着打开我们前面的192.168.70:8161 可以看到刚发送的消息信息

接着运行消费者去消费者10条消息

看到控制台完美输出消费者消费信息,这时候你在到8161端口查看,消息就被消费了,到此一个简单的消息队列案例就完成了,很简单大神勿喷~~~~~~~~~~~
jms - activeMQ入门案例的更多相关文章
- ActiveMQ入门案例-生产者代码实现
<–start–> 使用Java程序操作ActiveMQ生产消息,代码的复杂度较高,但也没有默写下来的必要. 开发ActiveMQ首先需要导入activemq-all.jar包,如果是ma ...
- 深入浅出 JMS(二) - ActiveMQ 入门指南
深入浅出 JMS(二) - ActiveMQ 入门指南 上篇博文深入浅出 JMS(一) – JMS 基本概念,我们介绍了消息通信的规范JMS,这篇博文介绍一款开源的 JMS 具体实现-- Active ...
- ActiveMQ入门练习
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...
- ActiveMQ 入门Nodejs版
ActiveMQ 入门下载与安装 官方下载地址 解压,运行bin/win[32|64]/activemq[.bat] 启动服务 环境信息 控制台: http://localhost:8161 默认端口 ...
- ActiveMQ之一--ActiveMQ入门
MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息.MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义 ...
- ActiveMQ 入门和与 Spring 整合
ActiveMQ 入门演示 activemq 依赖 <dependency> <groupId>org.apache.activemq</groupId> < ...
- ActiveMQ入门系列三:发布/订阅模式
在上一篇<ActiveMQ入门系列二:入门代码实例(点对点模式)>中提到了ActiveMQ中的两种模式:点对点模式(PTP)和发布/订阅模式(Pub & Sub),详细介绍了点对点 ...
- ActiveMQ入门系列二:入门代码实例(点对点模式)
在上一篇<ActiveMQ入门系列一:认识并安装ActiveMQ(Windows下)>中,大致介绍了ActiveMQ和一些概念,并下载.安装.启动他,还访问了他的控制台页面. 这篇,就用代 ...
- SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)
SpringMVC简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 Spring结构图 Spr ...
随机推荐
- 一、Android四大框架之ContentProvider的学习与运用,实现SQLite的增删改查。
本文系原创博客,文中不妥烦请指出,如需转载摘要请注明出处! ContentProvider的学习与运用 Alpha Dog 2016-04-13 10:27:06 首先,项目的地址:https:// ...
- Redis相关命令
一.命令示例 1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX: #在Shell命令行下启动Redis客户端工具. /> redis-cli #清空当前选择的数据库 ...
- 自动修改博客CSS样式用的代码
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js&qu ...
- 00_Linux介绍_我的Linux之路
原文章发布于特克斯博客www.susmote.com 什么是操作系统 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机& ...
- 【Android】带进度条的WebView
http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html
- linux下tomcat无法访问问题(换一种说法:无法访问8080端口)
有时候linux下的tomcat其他机器无法访问,比如主机无法访问linux虚拟机的tomcat,这是因为tocat的端口,linux没有对外开放,所以只能localhost访问,但是别的机器访问不了 ...
- 微信公众平台开发,模板消息,网页授权,微信JS-SDK,二维码生成(4)
微信公众平台开发,模板消息,什么是模板消息,模板消息接口指的是向用户发送重要的服务通知,只能用于符合场景的要求中去,如信用卡刷卡通知,购物成功通知等等.不支持广告营销,打扰用户的消息,模板消息类有固定 ...
- ibatis.net 入门demo 实现基本增删改查
1.项目架构体系 DAO(数据访问层) Domain(实体层) Text(表示层) 2.比较重要的是需要添加两个dll的引用,以及两个配置文件和一个XML文件 两个 IbatisNet.Com ...
- 【Spring源码深度解析学习系列】容器的基础XmlBeanFactory(二)
一.配置文件封装 Spring的配置文件读取是通过ClassPathResource进行封装的,如new ClassPathResource("test.xml"),那么Class ...
- Access数据库跨库查询及记录集区分
医疗设备软件一般都是单机软件,如果是Windows平台,常会选择Access数据库存储结构化数据,因为他轻量,便于部署.然而随着医疗信息化的发展,医生希望对多台单机设备的数据进行管理,采用网络数据库当 ...