ActiveMQ(li)
一、ActiveMQ
首先,ActiveMQ不是一个框架,它不是struct,webx,netty这种框架,它更像是tomcat服务器,因为你使用它之前必须启动它,activeMQ和JMS的关系有点类似于tomcat和servlet的关系,tomcat实现了servlet规范,同理activeMQ实现了JMS规范,它们都是服务器,在使用其服务之前需要先把服务器启动起来。
//#准备activeMQ的环境和tomcat的环境一样简单。
//1.下载:wget http://apache.freelamp.com//activemq/apache-activemq/5.4.2/apache-activemq-5.4.2-bin.tar.gz
//2.解压:tar xvf apache-activemq-5.4.2-bin.tar.gz
//3.启动:进入bin目录执行activemq脚本,输入 http://localhost:8161,ActiveMQ服务器成功启动之后,我们就可以向这个服务器发送消息,或者从这个服务器接收消息了
上面是Linux环境下的安装,解压和启动。下面是Windows环境下的ActiveMQ的配置和使用。http://activemq.apache.org/download.html下载稳定版本。
二、ActiveMQ发消息
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory; public class SendMessage { private static final String url = "tcp://10.20.156.22:61616";
private static final String QUEUE_NAME = "yunpeng.jiangyp";
protected String expectedBody = "<hello>world!</hello>"; public void sendMessage() throws JMSException { ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
Connection connection = connectionFactory.createConnection();
connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination desion = session.createQueue(QUEUE_NAME);
MessageProducer producer = session.createProducer(desion);
TextMessage message = session.createTextMessage(expectedBody);
producer.send(message);
connection.close();
} public static void main(String[] args) throws JMSException {
SendMessage sndMsg = new SendMessage();
sndMsg.sendMessage();
}
}
这段代码很简单,就是向activemq服务器发送一条消息,当成功发送给activemq之后,可以在(http://10.20.156.22:8161/admin/queues.jsp)activemq服务器的控制台看到这条消息。控制台显示yunpeng.jiangyp堆积了2条消息。

三、ActiveMQ收消息
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory; public class ReceiveMessage { private static final String url = "tcp://10.20.156.22:61616";
private static final String QUEUE_NAME = "yunpeng.jiangyp"; public static void main(String[] args) throws JMSException { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(url);
Connection connection = factory.createConnection();
connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination desion = session.createQueue(QUEUE_NAME);
MessageConsumer consumer = session.createConsumer(desion);
while (true) { Message message = consumer.receive(1000);
if (message == null) break;
if (message instanceof TextMessage) {
TextMessage textMsg = (TextMessage) message;
String msg = textMsg.getText();
System.out.println(msg);
}
}
connection.close(); }
}
这段代码也很简单,就是从activemq服务器接收一条消息,可以发现发送和接收消息都需要创建Connection,Session,Queue,唯一不同的是发送消息是创建MessageProducer,而接收消息是创建MessageConsumer,这也非常形象的证明了activemq的生产者和消费者模式。运行这段代码会打印出之前发送的消息信息,同时控制台会显示两条堆积的消息被消费。
在JMS中两种发送消息的方式,包含point-to-point 和 publish/subscribe。
四、
ActiveMQ(li)的更多相关文章
- 深入浅出 消息队列 ActiveMQ(转)
一. 概述与介绍 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...
- ActiveMQ(一)——简介
一.ActiveMQ简介 ActiveMQ是什么ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现的消中间件(MOM) Activ ...
- spring源码:学习线索(li)
一.spring xml配置(不包括AOP,主要了解在初始化及实例化过程中spring配置文件中每项内容的具体实现过程,从根本上掌握spring) <bean>的名字 &,alia ...
- java socket编程(li)
一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以 ...
- spring源码:ApplicationContext的增强功能(li)
ApplicationContext作为资源加载器:ApplicationContext作为事件发布者: Java原生提供了事件发布机制------EventObject对象作为发布的事件,Event ...
- spring源码:BeanPostProcessor(li)
在spring管理Bean的初始化过程中,除了正常管理bean的实例化(初始化.参数注入等)外,还对外提供了丰富的对Bean操作的扩展.例如自定义初始化操作,自定义容器退出时Bean的销毁操作等等.这 ...
- spring源码:IOC(li)
一.BeanDefinition BeanDefinition是配置文件<bean>元素标签在容器中内部表示形式.创建最终的BeanDefinition主要包括两个步骤: 1)利用Bean ...
- 分布式任务&分布式锁(li)
目前系统中存在批量审批.批量授权等各个操作,批量操作中可能因为处理机器.线程不同,造成刷新缓存丢失授权等信息,如批量审批同一用户权限多个权限申请后,流程平台并发的发送多个http请求到acl不同服务器 ...
- MySQL引擎、索引和优化(li)
一.存储引擎 存储引擎,MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术 ...
随机推荐
- BPM助力企业数字化转型
自九十年代末,流程管理开始引入国内,至今已经有20多年的历史了,由最初的部门级应用向企业级应用转变,大家的认知也经历了一系列的发展变化.不同阶段的信息化水平对企业的流程以及BPM平台也提出了不同的需求 ...
- Git(1)
安装Git 完毕 (在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦) 1.D盘新建 GitTest 文件夹 2.打开GitTest , 在空白的地方右键, 3.单击 Git Bash He ...
- Hadoop 2.x 生态系统及技术架构图
一.负责收集数据的工具:Sqoop(关系型数据导入Hadoop)Flume(日志数据导入Hadoop,支持数据源广泛)Kafka(支持数据源有限,但吞吐大) 二.负责存储数据的工具:HBaseMong ...
- SQL 数据优化索引建suo避免全表扫描
首先什么是全表扫描和索引扫描?全表扫描所有数据过一遍才能显示数据结果,索引扫描就是索引,只需要扫描一部分数据就可以得到结果.如果数据没建立索引. 无索引的情况下搜索数据的速度和占用内存就会比用索引的检 ...
- Linux-Rhel6 恢复误删文件
需要工具extundelete(可通过xshell上传下载到linux)知识点:ifconifig eth0 查看ipfdisk /dev/sda 管理磁盘m ...
- hibernate-mapping-3.0.dtd;hibernate-configuration-3.0.dtd;hibernate.properties所在路径
hibernate-mapping-3.0.dtd 所在路径:hibernate-release-5.2.5.Final\project\hibernate-core\src\main\resourc ...
- Jquery EasyUI 开发实录
有好几年没有用过EasyUI了,最近在外包做的一个项目中新增功能时,又用到了,本以为和按照以前那样用就可以了,可当我真正用的时候,发现许多地方不一样了,就连官网的文档都更新了,最突出的就是不知道什么时 ...
- Netty实现高性能RPC服务器优化篇之消息序列化
在本人写的前一篇文章中,谈及有关如何利用Netty开发实现,高性能RPC服务器的一些设计思路.设计原理,以及具体的实现方案(具体参见:谈谈如何使用Netty开发实现高性能的RPC服务器).在文章的最后 ...
- 【转】ofbiz数据库表结构设计
真心不错的文章,可以加深对企业信息化的设计理解:) http://blog.sina.com.cn/s/blog_a2ca5d8c01017fa0.html http://blog.sina.com. ...
- 如何从本地导入.nupkg文件
买了本asp.net mvc4高级编程 里面的源码下载下来是.nupkg后缀的文件,不知道怎么引入到项目中, baidu无果,只好google,可怜我英语四级都难的人,不过所幸还是找到了方法: htt ...