ActiveMQ简单介绍+简单实例
本文出自: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简单介绍+简单实例相关推荐
- Zookeeper详细介绍+dubbo简单介绍+简单大白话讲解
Zookeeper zookeeper前言 zookeeper简介绍 dubbo中为何使用zookeeper(如果理解dubbo实现原理可以忽略) dubho好处简单介绍下 dubbo如何使用zook ...
- Dubbo简单介绍及实例
1.概念 Dubbo是一个分布式服务框架,以及阿里巴巴内部的SOA服务化治理方案的核心框架.其功能主要包含:高性能NIO通讯及多协议集成.服务动态寻址与路由.软负载均衡与容错,依赖分析与降级等. 说通 ...
- JMS学习(3):--ActiveMQ简单的HelloWorld实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...
- 深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...
- ActiveMQ简单介绍以及安装
ActiveMQ简单介绍以及安装 现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS ...
- 深入浅出JMS(三)–ActiveMQ简单的HelloWorld实例(转载)
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...
- ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建
ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...
- JMS(Java消息服务)(Activemq简单介绍)
是什么? JMS(java消息服务)是规范,它定义了一些规则,一些接口.具体实现由各种做这个产品的厂家或开源组织来实现. 为什么? 在JMS还没有诞生前,每个企业都会有自己的一套内部消息系统,比如项目 ...
- java过滤器应用实例_Servlet过滤器Filter的简单介绍(附示例)
本篇文章给大家带来的内容是关于Servlet过滤器Filter的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 特点 1)Filter是依赖于Servlet容器,属 ...
最新文章
- WIRW:淡水分子微生物生态学综述
- C#中Monitor和Lock以及区别
- 【Apache POI】基础处理方法总结
- 提取数据_EasyStat如何提取数据+个性化出图
- 使用ZooKeeper ACL特性进行znode控制
- 【Python】32 个常用入门 Python 实现
- c# winform中datagridview空间添加序号和表头“序号”
- Thrift RPC实战(七) 基于zookeeper和thrift的RPC服务发布订阅
- 微信经典飞机大战素材
- editplus文本编辑器添加语法高亮
- IMU与Gyro及其它相关
- 【游戏开发实战】2D游戏摄像机镜头跟随,屏幕边缘限制镜头移动(使用Cinemachine组件)
- 苹果MacBookPro六核i9芯32G存4TB硬SSD560X显15寸顶配51352元(公号回复“苹果AI”下载PDF资料)
- Android - 修改主题和颜色
- Xposed插件的编写
- 大都会高端酒店推出迪拜目前最昂贵的豪华顶楼
- linux装百度网盘不能运行,在Deepin系统中安装百度网盘的两种方法
- 开发者在掘金路上的选择
- 红米路由器ac2100怎样设置ipv6_红米路由器AC2100怎么样
- 全栈工程师需要具备哪些技能
热门文章
- Django的MEDIA_ROOT和STATIC_ROOT
- Android音频开发(六)音频编解码之初识MediaCodec上
- python token api_python接口自动化之token登录
- 李迟2022年1月知识总结
- 我的docker随笔2:docker在ubuntu上的安装
- 关于Ajax和@RequestBody配合使用的问题
- 【Flink】Flink exactly-once 报错 Timeout expired after 60000 milliseconds while awaiting InitProducerId
- Elasticsearch】es 模糊查询导致Elasticsearch服务宕机
- 【ES】ES 7.6报错 SearchPhaseExecutionException: all shards failed OutOfMemoryError
- 【算法】BloomFilter 如何判断一个元素在亿级数据中是否存在?