- 浏览: 1577309 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (289)
- java 语法基础 (51)
- spring (8)
- mvc struct /Ant --build.xml (8)
- SOA (0)
- oracle 9i/10g (23)
- sql server 2000-2005 (3)
- 数据库基础知识 (6)
- 设计模式与软件架构 (10)
- Hibernate 持久化 (9)
- J2SE/J2EE/J2ME/AJAX 技术 (8)
- JSF 技术 (3)
- JAVA 图形化 (0)
- JMS (40)
- Eclipse 3.2 IDE 开发技巧 (13)
- 项目处理方法集合 (2)
- html/jsp/javascript (2)
- Unix/Linux (9)
- j2me/ARM/windriver/嵌入式 (4)
- 电信科学 (8)
- jsp (1)
- c/c++ (1)
- LZW压缩算法(java) (2)
- Android (77)
- 版本管理git/svn (2)
最新评论
-
huihai:
有demo吗?
NamingStrategy实现动态表名映射 -
cangbaotu:
推荐给大家一些有用的爬虫源码:https://github.c ...
网络爬虫(源代码参考) -
tuspark:
除了.classpath文件以外,.project文件也应该了 ...
Eclipse .classpath文件浅谈 -
tuspark:
造成eclipse自动关闭的原因有很多,这里有很多介绍:ecl ...
eclipse 自动关闭 解决方案 -
DEMONU:
网上都是这些,这种文章。。。
ActiveMQ中的消息持久性
ActiveMQ的一个简单示例
关键字: activemq
最近由于公司项目需要,开始学习JMS,用的是ActiveMQ。由于这方面网上的例子不是很多,而且有的也不完整。于是经过几天的摸索学习,写了一个简单的小例子,现在贴出来与大家分享。
ProducerTool.java用于发送消息:
java 代码
- package homework;
- import javax.jms.Connection;
- 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 org.apache.activemq.ActiveMQConnection;
- import org.apache.activemq.ActiveMQConnectionFactory;
- public class ProducerTool {
- private String user = ActiveMQConnection.DEFAULT_USER;
- private String password = ActiveMQConnection.DEFAULT_PASSWORD;
- private String url = ActiveMQConnection.DEFAULT_BROKER_URL;
- private String subject = "TOOL.DEFAULT";
- private Destination destination = null;
- private Connection connection = null;
- private Session session = null;
- private MessageProducer producer = null;
- // 初始化
- private void initialize() throws JMSException, Exception {
- ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
- user, password, url);
- connection = connectionFactory.createConnection();
- session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- destination = session.createQueue(subject);
- producer = session.createProducer(destination);
- producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
- }
- // 发送消息
- public void produceMessage(String message) throws JMSException, Exception {
- initialize();
- TextMessage msg = session.createTextMessage(message);
- connection.start();
- System.out.println("Producer:->Sending message: " + message);
- producer.send(msg);
- System.out.println("Producer:->Message sent complete!");
- }
- // 关闭连接
- public void close() throws JMSException {
- System.out.println("Producer:->Closing connection");
- if (producer != null)
- producer.close();
- if (session != null)
- session.close();
- if (connection != null)
- connection.close();
- }
- }
ConsumerTool.java用于接受消息,我用的是基于消息监听的机制,需要实现MessageListener接口,这个接口有个onMessage方法,当接受到消息的时候会自动调用这个函数对消息进行处理。
java 代码
- package homework;
- import javax.jms.Connection;
- import javax.jms.Destination;
- import javax.jms.JMSException;
- import javax.jms.MessageConsumer;
- import javax.jms.Session;
- import javax.jms.MessageListener;
- import javax.jms.Message;
- import javax.jms.TextMessage;
- import org.apache.activemq.ActiveMQConnection;
- import org.apache.activemq.ActiveMQConnectionFactory;
- public class ConsumerTool implements MessageListener {
- private String user = ActiveMQConnection.DEFAULT_USER;
- private String password = ActiveMQConnection.DEFAULT_PASSWORD;
- private String url = ActiveMQConnection.DEFAULT_BROKER_URL;
- private String subject = "TOOL.DEFAULT";
- private Destination destination = null;
- private Connection connection = null;
- private Session session = null;
- private MessageConsumer consumer = null;
- // 初始化
- private void initialize() throws JMSException, Exception {
- ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
- user, password, url);
- connection = connectionFactory.createConnection();
- session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- destination = session.createQueue(subject);
- consumer = session.createConsumer(destination);
- }
- // 消费消息
- public void consumeMessage() throws JMSException, Exception {
- initialize();
- connection.start();
- System.out.println("Consumer:->Begin listening...");
- // 开始监听
- consumer.setMessageListener(this);
- // Message message = consumer.receive();
- }
- // 关闭连接
- public void close() throws JMSException {
- System.out.println("Consumer:->Closing connection");
- if (consumer != null)
- consumer.close();
- if (session != null)
- session.close();
- if (connection != null)
- connection.close();
- }
- // 消息处理函数
- public void onMessage(Message message) {
- try {
- if (message instanceof TextMessage) {
- TextMessage txtMsg = (TextMessage) message;
- String msg = txtMsg.getText();
- System.out.println("Consumer:->Received: " + msg);
- } else {
- System.out.println("Consumer:->Received: " + message);
- }
- } catch (JMSException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
如果想主动的去接受消息,而不用消息监听的话,把consumer.setMessageListener(this)改为Message message = consumer.receive(),手动去调用MessageConsumer的receive方法即可。
下面是测试类Test.java:
java 代码
- package homework;
- import javax.jms.JMSException;
- public class Test {
- /**
- * @param args
- */
- public static void main(String[] args) throws JMSException, Exception {
- // TODO Auto-generated method stub
- ConsumerTool consumer = new ConsumerTool();
- ProducerTool producer = new ProducerTool();
- // 开始监听
- consumer.consumeMessage();
- // 延时500毫秒之后发送消息
- Thread.sleep(500);
- producer.produceMessage("Hello, world!");
- producer.close();
- // 延时500毫秒之后停止接受消息
- Thread.sleep(500);
- consumer.close();
- }
- }
以上就是我学习ActiveMQ之后写的一个简单的例子,希望对你有帮助,如果有什么错误还请指正。
发表评论
-
基于jms使用ActiveMQ实现异步日志功能.消息持久到oracle 10g 数据库
2008-09-18 15:05 9893package askyaya.entity;import j ... -
activemq 重新连接的机制
2008-09-18 14:39 23169最近一个项目要用到ActiveMq,并且需要最大程度的保证消息 ... -
ActiveMQ stop inactivity read check
2008-09-17 16:01 10499You can do the following to fix ... -
WSAD环境下JMS异步通信全攻略 (3)
2008-09-11 14:18 31743.5 消息驱动的Bean 在前文讨论JMS消息接收处理逻 ... -
WSAD环境下JMS异步通信全攻略 (2)
2008-09-11 13:58 3720三、JMS P2P编程 在JMS P2P通信方式中,发送程 ... -
WSAD环境下JMS异步通信全攻略 (1)
2008-09-11 13:57 4623一、JMS基本概念 1.1 P2P通信 1.2 Pub ... -
topicpublisher (jms)
2008-09-10 18:55 2883目的地类型JNDI名字连接工厂类型Topic/Queuejav ... -
ProducerTool /MessageBroker /getConnectionFactoryF
2008-09-10 18:12 2438lib: jms1.1.jar activemq-all-5. ... -
activemq例子代码 发送BytesMessage消息
2008-09-10 13:55 18316import javax.jms.Connection; im ... -
ActiveMQ in Action(7)
2008-09-10 13:44 3908ActiveMQ in Action(7) 关键字 ... -
ActiveMQ in Action(6)
2008-09-10 13:43 3687ActiveMQ in Action(6) 关键字: acti ... -
ActiveMQ in Action(5)
2008-09-10 13:42 3881ActiveMQ in Action(5) 关键字: acti ... -
ActiveMQ in Action(4)
2008-09-10 13:40 3432ActiveMQ in Action(4) 关键字: acti ... -
ActiveMQ in Action(3)
2008-09-10 13:39 3636ActiveMQ in Action(3) 关键字: acti ... -
ActiveMQ in Action(2)
2008-09-10 13:38 4179ActiveMQ in Action(2) 关键字: acti ... -
ActiveMQ in Action(1)
2008-09-10 13:37 5742ActiveMQ in Action(1) 关键字: acti ... -
为ActiveMQ服务器添加简单验证机制
2008-09-09 23:48 4154为ActiveMQ服务器添加简单验证机制 关键字: Java, ... -
Sender/receiver 消息
2008-09-09 20:28 2082Sender:import java.io.BufferedR ... -
activema.xml 配置
2008-09-09 17:44 3769/***作者:andyao,email:andyaoy@gma ... -
JMX 与系统管理
2008-09-08 10:52 1827Java SE 6 新特性: JMX 与系统管理 ...
相关推荐
ActiveMQ RabbitMQ AliyunMQ 示例程序
ActiveMQ 教学视频/教程 /附带笔记等资源,jms 案例文档等...
activeMQ+spring+springmvc整合示例
基于kahadb的activemq高可用集群部署配置示例,两个broker分别部署在两台机器上,一台机子上面,两个实例组成一个broker对外提供高可用服务,两个broker通过桥接形成集群服务
C#下使用消息中间件 ActiveMQ 和Spring.NET框架开发示例
1.解压 ...ACTIVEMQ_HOME=/opt/apache-activemq-5.15.12 PATH=/opt/apache-activemq-5.15.12/bin:$PATH export ACTIVEMQ_HOME PATH 5.activemq的后台默认端口是61616,前台访问端口是8161
使用SpringBoot开发的ActiveMQ生产者/消费者的demo。相关内容可以看这里: https://my.oschina.net/noryar/blog/1575003
包含这两个javax.jms.jar javax.management.j2ee-api-1.1.1.jar
用于指导部署activemq master/slave架构,采用NFS
用C#实现的ActiveMQ发布/订阅消息传送源程序
ActiveMQ与Spring整合示例Demo,ActiveMQ安装在linux系统中
activemq+spring demo 简单示例。安装activemq 启动,运行Test
本教程旨在帮助activeMQ初学者入门,通过本示例,能完全理解activeMQ的基本概念,为分布式应用打下基础。 本示例中,使用maven管理,完美解决各种依赖问题,不需要自行配置,导入项目等待eclipse自行下载jar包后即可...
C#通信编程整理(Socket,ActiveMQ,TCP/UDP通讯等)C#通信编程整理
这是一个activemq应用的简单示例代码,使用maven搭建的.适合刚刚开始学习activemq的程序员
<a href=http://activemq.apache.org/version-5-getting-started.html >http://activemq.apache.org/version-5-getting-started.html</a> <a href=http://java.sun....
Spring整合JMS(activeMQ)的示例,开发环境为eclipse+maven
activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子...
ActiveMQ是一种开源的,实现了JMS规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。 网盘地址:链接: https://pan.baidu.com/s/1nvOcn0l 密码: 4esh 话说怎么上传...
您需要配置一个名为 BATCH_CONF 的环境变量,其中包含 conf 文件在本地计算机上的路径。 就像是: $BATCH_CONF={$LOCAL_WORKSPACE}/batch/batch-conf/wc 设置 ActiveMQ 您将需要来自 Apache Software Foundation ...