本文出自:http://www.open-open.com/lib/view/open1388994166156.html

1. JMS基本概念
     JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化 企业 应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。 
    对于点到点模型,消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了,所以一个消息只能被一个接收者消费。

与点到点模型不同,发布/订阅模型中,消息生产者产生一个消息后,把这个消息发送到一个Topic中,这个Topic可以同时有多个接收者在监听,当一个消息到达这个Topic之后,所有消息接收者都会收到这个消息。

2.编程的结构

2.1消息产生者向JMS发送消息的步骤 
(1)创建连接使用的工厂类JMS ConnectionFactory 
(2)使用管理对象JMS ConnectionFactory建立连接Connection 
(3)使用连接Connection 建立会话Session 
(4)使用会话Session和管理对象Destination创建消息生产者MessageSender 
(5)使用消息生产者MessageSender发送消息 
2.2消息消费者从JMS接受消息的步骤 
(1)创建连接使用的工厂类JMS ConnectionFactory 
(2)使用管理对象JMS ConnectionFactory建立连接Connection 
(3)使用连接Connection 建立会话Session 
(4)使用会话Session和管理对象Destination创建消息消费者MessageReceiver 
(5)使用消息消费者MessageReceiver接受消息,需要用setMessageListener将MessageListener接口绑定到MessageReceiver 
消息消费者必须实现了MessageListener接口,需要定义onMessage事件方法。

3.ActiveMQ的下载

下载地址:http://activemq.apache.org/download.html
解压缩到本地,然后启动/bin/activemq.bat

并且有的Eclipse没有自带jms.jar,需要去下载

4.发送端代码:

package com.xkey.JMS;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class JmsSender {private ConnectionFactory connectionFactory = null;private Connection connection = null;private Session session = null;private Destination destination = null;private MessageProducer producer = null;JmsSender(){}public void init(){connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");try{connection = connectionFactory.createConnection();connection.start();session = connection.createSession(Boolean.TRUE.booleanValue(),  Session.AUTO_ACKNOWLEDGE);//Queuedestination = session.createQueue("xkey");producer = session.createProducer(destination);//Topic/*** Topic topic = session.createTopic("xkey.Topic");* producer = session.createProducer(topic);*/producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);sendMessage(session,producer);session.commit();}catch(Exception e){e.printStackTrace();}finally{try {connection.close();} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}private void sendMessage(Session session,MessageProducer producer) throws JMSException{for (int i = 1; i <= 5; i ++) {  TextMessage message = session.createTextMessage("First ActiveMQ Test:::: " + i);  // 发送消息System.out.println("Sender:" + "First ActiveMQ Test::: " + i);  producer.send(message);  }  }/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubJmsSender jms = new JmsSender();jms.init();}}

 

5.接收端代码

package com.xkey.JMS;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;  import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;  public class JmsReceiver {private ConnectionFactory connectionFactory = null;private Connection connection = null;private Session session = null;private MessageConsumer consumer = null;private Destination destination = null;public JmsReceiver(){}public void init(){connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");try{connection = connectionFactory.createConnection();connection.start();session = connection.createSession(Boolean.TRUE.booleanValue(),  Session.AUTO_ACKNOWLEDGE); destination = session.createQueue("xkey");consumer = session.createConsumer(destination);consumer.setMessageListener(new MessageListener(){@Overridepublic void onMessage(Message msg) {// TODO Auto-generated method stubTextMessage message = (TextMessage)msg;try{System.out.println("Receiver " + message.getText());  }catch(Exception e){e.printStackTrace();}}});/**while (true) {  TextMessage message = (TextMessage) consumer.receive(1000);  if (null != message) {  System.out.println("Receiver " + message.getText());  } else {  break;  }  }  */}catch(Exception e){e.printStackTrace();}finally{try {connection.close();} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubJmsReceiver jms = new JmsReceiver();jms.init();}}

  6、JMS+ActiveMQ+Spring+TomCat可以用来实现企业级的消息队列,这样能使服务请求端和服务操作端实现低耦合。不知道怎么实现分布式,也就是多个请求,每个请求用不同的服务器去相响应。

Spring + JMS + ActiveMQ实现简单的消息队列(监听器异步实现)

连接:   http://blog.csdn.net/acceptedxukai/article/details/7775746

在Tomcat 6.0下用JNDI连接IBM MQ 6.0的配置方法(一)

连接:  http://blog.sina.com.cn/s/blog_60dadc490100ecy6.html

http://www.javawind.net/help/html/spring_ref_2.0/html/jms.html

扩展阅读

ActiveMQ接收消息+发送消息的简单实例 
ActiveMQ持久化方式 
ActiveMQ持久化方式 
activemq存储 
activemq特性

为您推荐

java发送内嵌图片邮件
PHP图片上传与预览 
CSS学习总结 
Arcgis Android API开发之离线地图 
Struts2自定义过滤器 + 百度富文本控件UEditor + Smb上传图片到独立服务器

更多

ActiveMQ

转载于:https://www.cnblogs.com/master-yao/p/7764635.html

ActiveMQ简单介绍+简单实例相关推荐

  1. Zookeeper详细介绍+dubbo简单介绍+简单大白话讲解

    Zookeeper zookeeper前言 zookeeper简介绍 dubbo中为何使用zookeeper(如果理解dubbo实现原理可以忽略) dubho好处简单介绍下 dubbo如何使用zook ...

  2. Dubbo简单介绍及实例

    1.概念 Dubbo是一个分布式服务框架,以及阿里巴巴内部的SOA服务化治理方案的核心框架.其功能主要包含:高性能NIO通讯及多协议集成.服务动态寻址与路由.软负载均衡与容错,依赖分析与降级等. 说通 ...

  3. JMS学习(3):--ActiveMQ简单的HelloWorld实例

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

  4. 深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

  5. ActiveMQ简单介绍以及安装

    ActiveMQ简单介绍以及安装   现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS ...

  6. 深入浅出JMS(三)–ActiveMQ简单的HelloWorld实例(转载)

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

  7. ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建

    ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...

  8. JMS(Java消息服务)(Activemq简单介绍)

    是什么? JMS(java消息服务)是规范,它定义了一些规则,一些接口.具体实现由各种做这个产品的厂家或开源组织来实现. 为什么? 在JMS还没有诞生前,每个企业都会有自己的一套内部消息系统,比如项目 ...

  9. java过滤器应用实例_Servlet过滤器Filter的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Servlet过滤器Filter的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 特点 1)Filter是依赖于Servlet容器,属 ...

最新文章

  1. WIRW:淡水分子微生物生态学综述
  2. C#中Monitor和Lock以及区别
  3. 【Apache POI】基础处理方法总结
  4. 提取数据_EasyStat如何提取数据+个性化出图
  5. 使用ZooKeeper ACL特性进行znode控制
  6. 【Python】32 个常用入门 Python 实现
  7. c# winform中datagridview空间添加序号和表头“序号”
  8. Thrift RPC实战(七) 基于zookeeper和thrift的RPC服务发布订阅
  9. 微信经典飞机大战素材
  10. editplus文本编辑器添加语法高亮
  11. IMU与Gyro及其它相关
  12. 【游戏开发实战】2D游戏摄像机镜头跟随,屏幕边缘限制镜头移动(使用Cinemachine组件)
  13. 苹果MacBookPro六核i9芯32G存4TB硬SSD560X显15寸顶配51352元(公号回复“苹果AI”下载PDF资料)
  14. Android - 修改主题和颜色
  15. Xposed插件的编写
  16. 大都会高端酒店推出迪拜目前最昂贵的豪华顶楼
  17. linux装百度网盘不能运行,在Deepin系统中安装百度网盘的两种方法
  18. 开发者在掘金路上的选择
  19. 红米路由器ac2100怎样设置ipv6_红米路由器AC2100怎么样
  20. 全栈工程师需要具备哪些技能

热门文章

  1. Django的MEDIA_ROOT和STATIC_ROOT
  2. Android音频开发(六)音频编解码之初识MediaCodec上
  3. python token api_python接口自动化之token登录
  4. 李迟2022年1月知识总结
  5. 我的docker随笔2:docker在ubuntu上的安装
  6. 关于Ajax和@RequestBody配合使用的问题
  7. 【Flink】Flink exactly-once 报错 Timeout expired after 60000 milliseconds while awaiting InitProducerId
  8. Elasticsearch】es 模糊查询导致Elasticsearch服务宕机
  9. 【ES】ES 7.6报错 SearchPhaseExecutionException: all shards failed OutOfMemoryError
  10. 【算法】BloomFilter 如何判断一个元素在亿级数据中是否存在?