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 ...
随机推荐
- DOM生成XML文档
import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuil ...
- Vue基础
1.可以使用 methods 来替代 computed,效果上两个都是一样的. 但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值. {{ reversedMessage ...
- Week04-面向对象设计与继承
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 is a关系 覆盖 Object 超级父类 继承 抽象类 多态 重载 static super private public p ...
- Linux下vim上编辑实现进度条
1.效果展示: 进度条,先来看一个效果: 这是进度结果,模拟实现了进度条的前进.百分比的现实.以及稍微的动画特效. 2.原理描述: 因为Linux系统下的输出有缓存,如果及时刷新显示,就可以得到我们想 ...
- 【审核】检查iOS项目中是否使用了IDFA
(1)什么是IDFA 关于IDFA,在提交应用到App Store时,iTunes Connect有如下说明: 这里说到检查项目中是否包含IDFA,那如何来对iOS项目(包括第三方SDK)检查是否包含 ...
- Flask 应用最佳实践
一个好的应用目录结构可以方便代码的管理和维护,一个好的应用管理维护方式也可以强化程序的可扩展性 应用目录结构 假定我们的应用主目录是"flask-demo",首先我们建议每个应用都 ...
- bzoj千题计划276:bzoj4515: [Sdoi2016]游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=4515 把lca带进式子,得到新的式子 然后就是 维护树上一次函数取min 一个调了一下午的错误: 当 ...
- System V IPC 之信号量
本文继<System V IPC 之共享内存>之后接着介绍 System V IPC 的信号量编程.在开始正式的内容前让我们先概要的了解一下 Linux 中信号量的分类. 信号量的分类 在 ...
- display属性
display 属性规定元素应该生成的框的类型. 值 描述 none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元 ...
- Css之导航栏学习
Css: ul { list-style-type:none; margin:; padding:; overflow:hidden; background-color:blue; /*固定在顶部*/ ...