JMS入门——开发起步之ActiveMQ
J2EE与JMS
JMS是J2EE的13种核心技术规范之一,是J2EE众多应用程序组件中的重要一员。J2EE有标准的JMS API开放,以支持各个JMS应用生产厂商的产品,开源的有jbossmq,openjms,mantamq,ActiveMQ等,不过大多已停止发展; 商业的有IBM WebSphere MQ, BEA WebLogic JMS, Oracle AQ等。
Apache ActiveMQ是众多JMS Provider中的的佼佼者,毕竟它由强大的Apache社区支持,一直保持着开发和升级,目前已经最新的版本是5.4.2。它功能强大,支持多种语言编写的客户端,符合J2EE1.4规范,支持持久化,甚至支持Ajax等等.
JMS开发入门
环境: jdk1.5以上, eclipse for j2ee版本, ${download}/activemq5.4.2/bin/activemq.exe运行起来
jar包: activemq-all-5.4.2.jar(官方发布里有) commons-logging-1.1.jar
废话不多说, 上代码先, demo1代码:
/* * xcch@cnic.cn * 消息发送者 */ import java.util.Date; import javax.jms.*; import org.apache.activemq.ActiveMQConnectionFactory; public class MessageSender { public static void main(String[] args) throws Exception { //ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("failover:(tcp://primary:61616)?timeout=3000&startupMaxReconnectAttempts=1&maxReconnectAttempts=0");//failover:失效转移 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://primary:61616?connectionTimeout=3000"); Connection connection = connectionFactory.createConnection(); //connection.setExceptionListener(new MyJmsException()); connection.start(); Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("my-queue"); MessageProducer producer = session.createProducer(destination); for(int i=0; i<3; i++) { MapMessage message = session.createMapMessage(); message.setLong("count", new Date().getTime()); Thread.sleep(1000); //通过消息生产者发出消息 producer.send(message); } session.commit(); session.close(); connection.close(); } }
/* * 消息接收者 */ import java.util.Date; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.MapMessage; import javax.jms.MessageConsumer; import javax.jms.Session; import org.apache.activemq.ActiveMQConnectionFactory; public class MessageReceiver { public static void main(String[] args) throws Exception { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); Connection connection = connectionFactory.createConnection(); connection.start(); final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("my-queue"); MessageConsumer consumer = session.createConsumer(destination); int i = 0; while (i < 3) { i++; MapMessage message = (MapMessage) consumer.receive(); session.commit(); // TODO something.... System.out.println("收到消息:" + new Date(message.getLong("count"))); } session.close(); connection.close(); } }
注意,这里要求先将activemq.exe运行起来,作为JMS的Provider.其实J2EE官方发行版里面应该也带有JMS的一个Provider,相关的demo参考2
字符串 "tcp://primary:61616?connectionTimeout=3000" 表示一个URI,它包括了协议部分,url部分,及选项. ActiveMQ其实支持多种transport(参考2),不同的transport对应不同的URI(格式,选项参数等不同).
参考:
- Oracle-JMS部分参考http://download.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/client.html
- J2EE-JMS部分参考:http://download.oracle.com/javaee/6/tutorial/doc/bncdr.html
- JMS常见transport参考:http://whitesock.javaeye.com/blog/164933
JMS入门——开发起步之ActiveMQ相关推荐
- JMS入门(一)--JMS基础
1. JMS基本概念 JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口,简化企业应用的开发.它支持两种消息通信模型:点到点(point-t ...
- Floodlight 入门 之 起步篇 - 如何处理PacketIN消息
Floodlight 入门 之 起步篇 - 如何处理PacketIN消息 2017-3-2 小论文写不出来好纠结,今天还在做Floodlight开发,好烦躁.这边博文介绍如何处理PacketIN消息, ...
- openlayers入门开发系列之地图属性查询篇
本篇的重点内容是利用openlayers实现地图属性查询功能,效果图如下: 实现思路: 模糊查询点击事件 //模糊查询 $("#swatchQuery").bind("c ...
- ASP.NET Aries 入门开发教程4:查询区的下拉配置
背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式 ...
- JMS学习(4):--Spring和ActiveMQ整合的完整实例
前言 这篇博文,我们基于spring+JMS+ActiveMQ+Tomcat,做一个Spring4.1.0和ActiveMQ5.11.1整合实例,实现了Point-To-Point的异步队列消息和PU ...
- html间隔代码_HTML+CSS基础入门开发,经典Loading加载缩放动画特效
大家好,本篇文章分享经典Loading加载缩放动画特效,欢迎参考和指正. 效果图: Loading加载缩放动画特效 HTML代码: CSS代码: 知识点: animation:是CSS3的动画属性,这 ...
- openlayers4 入门开发系列之地图工具栏篇(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载 webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 ...
- leaflet-webpack 入门开发系列三地图分屏对比(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载 webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 ...
最新文章
- 人才迁徙潮,2019年互联网各梯队排名重组,最适合程序员去的互联网公司有哪些?...
- Kubernetes存储之PV-PVC
- 西安后宰门小学_陈洪杰:“数学魔术”课程校本化的价值与意义 || 为西安后宰门小学点个赞...
- CommonLang3中的StringUtils最全解析
- 缺省参数-缺省参数的注意事项
- POJ - 3581 Sequence(后缀数组)
- Java——File类
- 用户体验很棒的Git学习网站
- 转: 如何挑选适合的前端框架
- FFmpeg Video Editor
- Chrome 新功能:因更新或崩溃而重启后,PWA应用将自动恢复运行!
- 技术出身要创业,容易吗?
- 【SSH网上商城项目实战13】Struts2实现文件上传功能
- 初学者入门——NOI题库1.3
- 全网最全的autojs例子,有一千六百多的脚本文件,少走弯路
- 电脑一启动吃鸡就重启计算机,玩吃鸡老是重启电脑
- Live Streaming
- Geronimo入门与进阶
- 博后招募 | 浙江大学陈华钧教授招聘知识图谱等方向博后及算法工程师
- html5创建三次贝塞尔曲线,HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线