上一篇介绍了RabbitMQ的使用,这一篇介绍下JSM的另一个非常好的实现-ActiveMQ,两个框架实现机制基本类似,个人感觉差别并不是很大。

关于ActiveMQ的官方下载链接:https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/apache-activemq/5.10-SNAPSHOT/

1.开发环境:

Eclipse10 + jdk8 + ActiveMQ 5.1

2.步骤:

1)安装server

切换到:[安装目录]\apache-activemq-5.10-20140603.133406-78-bin\apache-activemq-5.10-SNAPSHOT\bin

执行:

.\activemq

备注:这些操作步骤可以在官方网站上查阅

http://activemq.apache.org/getting-started.html

2)创建项目

项目结构如上图所示,只需要引入一个jar包!!!

3)核心类:

publisher

package com.wicresoft.publisher;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class Publisher {private static final int SEND_NUMBER = 5;public static void main(String[] args) {// ConnectionFactory :连接工厂,JMS 用它创建连接ConnectionFactory connectionFactory;// Connection :JMS 客户端到JMS Provider 的连接Connection connection = null;// Session: 一个发送或接收消息的线程Session session;// Destination :消息的目的地;消息发送给谁.Destination destination;// MessageProducer:消息发送者MessageProducer producer;// TextMessage message;// 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jarconnectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");try {// 构造从工厂得到连接对象connection = connectionFactory.createConnection();// 启动connection.start();// 获取操作连接session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置destination = session.createQueue("FirstQueue");// 得到消息生成者【发送者】producer = session.createProducer(destination);// 设置不持久化,此处学习,实际根据项目决定producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);// 构造消息,此处写死,项目就是参数,或者方法获取sendMessage(session, producer);session.commit();} catch (Exception e) {e.printStackTrace();} finally {try {if (null != connection)connection.close();} catch (Throwable ignore) {}}}public static void sendMessage(Session session, MessageProducer producer)throws Exception {for (int i = 1; i <= SEND_NUMBER; i++) {TextMessage message = session.createTextMessage("ActiveMq 发送的消息" + i);// 发送消息到目的地方System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);producer.send(message);}}
}

Listener

package com.wicresfot.listener;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class Listener {public static void main(String[] args) {// ConnectionFactory :连接工厂,JMS 用它创建连接ConnectionFactory connectionFactory;// Connection :JMS 客户端到JMS Provider 的连接Connection connection = null;// Session: 一个发送或接收消息的线程Session session;// Destination :消息的目的地;消息发送给谁.Destination destination;// 消费者,消息接收者MessageConsumer consumer;connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");try {// 构造从工厂得到连接对象connection = connectionFactory.createConnection();// 启动connection.start();// 获取操作连接session = connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置destination = session.createQueue("FirstQueue");consumer = session.createConsumer(destination);while (true) {//设置接收者接收消息的时间,为了便于测试,这里谁定为100sTextMessage message = (TextMessage) consumer.receive(100000);if (null != message) {System.out.println("收到消息" + message.getText());} else {break;}}} catch (Exception e) {e.printStackTrace();} finally {try {if (null != connection)connection.close();} catch (Throwable ignore) {}}}
}

启动监听:

在[安装目录]\apache-activemq-5.6.0-bin\apache-activemq-5.6.0\bin下执行:

.\activemq

实现效果

发出消息:

接收消息(等一段时间之后):

消息能够正常异步发送和接收!

最后推荐一片不错的文章:http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html

Java Message Servicec - ActiveMQ相关推荐

  1. jmeter测试java服务_Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

    前言 JMS 介绍:JMS 即 Java 消息服务(Java Message Service)应用程序接口,是一个 Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分 ...

  2. Java Message Service(ActiveMQ 1)

    JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信 ...

  3. 什么情景下应当考虑使用JMS(Java Message Service )技术

    什么情景下应当考虑使用JMS(Java Message Service )技术         JMS,Java Message Service,是JavaEE平台最重要的规范之一, 也是企业开发中经 ...

  4. JMS : Java Message Service (Java消息服务)之一 [转]

    为什么80%的码农都做不了架构师?>>>    1 引言 1.1 编写目的 本文作为B2bi项目中开源产品JORAM的使用指导文档,旨在帮助项目组人员方便明了的进行JMS模块的详细设 ...

  5. 什么是JMS(Java Message Service消息服务)

    JMS的定义 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息 ...

  6. Java 消息服务(Java Message Service

    Java 消息服务( Java Message Service ,简称 JMS )是企业级消息传递系统,紧密集成于 Jboss Server 平台之中.企业消息传递系统使得应用程序能够通过消息的交换与 ...

  7. ActiveMQ的安装和启动 安装JAVA配置JAVA环境 下载ActiveMQ 解压压缩包 tar zxvf activemq-x.x.x-bin.tar.gz 至此,linux下Activ

    ActiveMQ的安装和启动 安装JAVA配置JAVA环境 下载ActiveMQ 解压压缩包  tar zxvf activemq-x.x.x-bin.tar.gz 至此,linux下ActiveMQ ...

  8. Java Message Service(JMS)总结

    一.JMS是个什么鬼 1.百度百科解释:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之 ...

  9. java 消息机制 ActiveMQ入门实例

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt180 1.下载ActiveMQ  去官方网站下载:http://active ...

最新文章

  1. 20个使用 Java CompletableFuture的例子
  2. linux验证文件的完整性,linux中校验文件完整性(md5,sha1)(示例代码)
  3. 安全学习概览——恶意软件分析、web渗透、漏洞利用和挖掘、内网渗透、IoT安全分析、区块链、黑灰产对抗...
  4. 【Paper】2015_异构无人机群鲁棒一致性协议设计_孙长银
  5. php后台无法接受文件,ios afnetworking2.x上传图片 服务端php无法接受文件问题
  6. 一文讲透非标品的商品类目设计
  7. mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据
  8. java 新区 老区_优学院《土地资源学》答案在线查题2020高校邦《Java核心开发技术【实境编程】》章测试答案...
  9. python3 递归
  10. vs2019Linux守护,Visual Studio 2019将支援Ninja显着提升Linux专案建置效率
  11. 看动画轻松理解「链表」实现「 LRU 缓存淘汰算法」
  12. c#文件流读取编码问题(转)新增加一个方法解决不带BOM的问题
  13. 如何批量给 Word、Excel、PDF、PPT 文档设置文件打开密码和删除密码
  14. Java获取图片大小 及 尺寸 图片压缩 jpg压缩
  15. windows或office原版镜像下载地址及msdn.itellyou上面列的项目的详细解读
  16. 这图怎么画| 相关性热图+柱状图
  17. 金融风控 Task02 数据分析
  18. Qt断开信号与槽的方法,Qt信号的处理 (connect和disconnect和blockSignals的使用方法)
  19. java回顾:JDBC、工具类、事务、SQL注入
  20. flex-gow 的用法

热门文章

  1. vue中插值语法中v-for() of 与v-for() in 遍历对象数组的异同,以及for in for of在方法中遍历对象和数组的异同
  2. TokenGazer评级丨MakerDao:去中心化金融趋势确立,项目治理恐有中心化风险
  3. uniapp微信小程序实现按住说话功能
  4. 精尽 Dubbo 原理与源码专栏( 已经完成 69+ 篇,预计总共 75+ 篇 )
  5. Linux 常用命令大全(虚拟机)
  6. c++三国杀【免费复制】——转载
  7. 保险也能拼购?个人可以凑够人数组团购买医疗保险的4大风险
  8. 02好好学习读书笔记-- 黄金思考圈
  9. 力扣刷题篇之【字符串篇】(一)
  10. 什么叫数字化服务-数字化转型网