ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。


特性:

⒈ 多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
⒉ 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
⒊ 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
⒋ 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
⒌ 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
⒍ 支持通过JDBC和journal提供高速的消息持久化
⒎ 从设计上保证了高性能的集群,客户端-服务器,点对点
⒏ 支持Ajax
⒐ 支持与Axis的整合
⒑ 可以很容易的调用内嵌JMS provider,进行测试

安装:

主页:

http://activemq.apache.org/

下载activemq的安装包.我下载的是windows的apache-activemq-5.14.0版本.

activemq服务启动地址:http://127.0.0.1:8161/admin/. 用户名/密码:admin/admin


启动方式:在apache-activemq-5.14.0的bin目录下有win32和win64文件夹,我的电脑是64位的,启动的时候选择win64文件夹下的activemq.bat执行.不要直接执行apache-activemq-5.14.0/bin目录下的activemq.bat.




可视化界面:


实例讲解:

消息生产者:

package com.java1234.activemq;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;/*** 消息生产者* @author Administrator**/
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); // 创建Sessiondestination=session.createQueue("FirstQueue1"); // 创建消息队列messageProducer=session.createProducer(destination); // 创建消息生产者sendMessage(session, messageProducer); // 发送消息session.commit();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{if(connection!=null){try {connection.close();} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}/*** 发送消息* @param session* @param messageProducer* @throws Exception*/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);}}
}

执行结果:

生产者发送消息:



消息消费者:

package com.java1234.activemq;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;/*** 消息消费者* @author Administrator**/
public class JMSConsumer {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(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);try {connection=connectionFactory.createConnection();  // 通过连接工厂获取连接connection.start(); // 启动连接session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Sessiondestination=session.createQueue("FirstQueue1");  // 创建连接的消息队列messageConsumer=session.createConsumer(destination); // 创建消息消费者while(true){TextMessage textMessage=(TextMessage)messageConsumer.receive(100000);if(textMessage!=null){System.out.println("收到的消息:"+textMessage.getText());}else{break;}}} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();} }
}

执行结果:

消费者执行结果:




【一头扎进JMS】(2)----ActiviteMQ点对点消息实现相关推荐

  1. 【ActiveMQ】一头扎进 JMS 之 ActiveMQ 视频教程

    <一头扎进 JMS 之 ActiveMQ 视频教程> 第一章 JMS 及 ActiveMQ 简介 第一节:JMS 规范简介 第二节:ActiveMQ 简介 第三节:ActiveMQ 开发包 ...

  2. 【一头扎进JMS】(4)----RabbitMQ概述

            MQ为Message Queue,消息队列是应用程序和应用程序之间的通信方法.RabbitMQ是一个开源的,在AMQP(一种提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的 ...

  3. 【activityMQ】一头扎进activeMQ学习

    ActiveMQ操作: 1: 下载  ActiveMQ http://www.apache.org/index.html#projects-list   apache 所有项目列表 2: 在配置后jd ...

  4. python自动化框架2019_《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!...

    1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...

  5. 一头扎进Node系列 - 目录

    前言 本系列是属于初级教程.博主我也还只是一个node的新兵蛋子,想通过学习官网的API文档,慢慢的打好Node基础.当然后期这系列文档会慢慢完善,并且会添加一些项目实战中遇到的一些问题以及解决方案! ...

  6. 一头扎进Shiro-自定义Realm

    在一头扎进Shiro-集成Web之前的博客,我们都是用shiro.ini保存用户.角色.权限信息,本篇文章我们将这些信息保存到数据库,通过自定义Realm完成身份验证和权限验证. 去掉用户.角色.权限 ...

  7. 一头扎进Mysql视频教程 + 源码

    [@2015-4-8] 记录一下自己的脚印:看到一个一头扎进Mysql视频教程 + 源码果断下载下来,看了看比较到位, 下载地址:http://www.xiaomengku.com/topic?id= ...

  8. 一头扎进SpringBoot视频教程(附源码与文档)

    目录:/099 一头扎进SpringBoot视频教程(附源码与文档) ┣━━<一头扎进SpringBoot>第八讲.mp4 ┣━━<一头扎进SpringBoot>第八讲源码及文 ...

  9. 一头扎进Maven3 (一)

    本系列博客将学习Maven项目管理工具,使用Maven管理jar包 一头扎进Maven3 (一):Maven安装与配置 文档结构 Maven简介 Maven安装与配置 Maven Hello Worl ...

最新文章

  1. poi 启用保护后取消_雪佛龙取消商标许可,澳洲加德士更名Ampol后启用新LOGO
  2. android读写文件
  3. 宇宙总统(洛谷-P1781)
  4. 【ES6】Set Map数据结构、Iterator遍历器
  5. php递归实现冒泡排序,排序算法之PHP版快速排序、冒泡排序
  6. 你第一次去丈母娘家时发生了哪些趣事?
  7. JVM学习手册(X):查看堆内存使用情况以及排错
  8. jupyter调用py文件_解决Jupyter notebook中.py与.ipynb文件的import问题
  9. [RHEL5企业级Linux服务攻略]--第11季 NIS服务全攻略
  10. 运放输入偏置电流方向_测试运算放大器的输入偏置电流
  11. 【定时自动清理磁盘空间】
  12. Codeforces Round #363 (Div. 2) B. One Bomb (水题)
  13. 网线水晶头两种标准的接法
  14. matlab 矩阵 矢量场,Matlab将矢量转换为矩阵(Matlab turning vectors into a matrix)
  15. Genymotion Booting 安卓虚拟机 一直加载问题
  16. Android自定义实现点赞效果!
  17. [AHK]Windows10中如何只通过键盘就将窗口移动到其他虚拟桌面?
  18. Unity(C#)读写xml文件详解
  19. 中国科学院大学计算机软件与理论量子研究生,2019中国科学院大学硕士研究生入学考试《量子力学》考试大纲...
  20. ALCATEL分机转接分机或手机设置

热门文章

  1. 《计算机网络》day03-计算机网络的体系结构
  2. MOD、SCON、PCON寄存器的配置
  3. Java_JUC_CountDownLatch/CyclicBarrier循环屏障/Semaphore信号灯/枚举
  4. 大数据拼精准可否触动电商个性营销神经
  5. java实现ecc加密:通过AES生成公钥加密数据,ECC加密公钥
  6. 潭州学院html学习(day01)
  7. PCL学习二:PCL基础应用教程
  8. 设计上不花钱的海澜之家,如何打开男人的衣柜?
  9. 高级自动化测试面试题(Web、App、接口)
  10. 2019区块链开年局势大好,飞轮效应的商业魔术该怎么玩?