- 浏览: 1591484 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 9943package askyaya.entity;import j ... -
activemq 重新连接的机制
2008-09-18 14:39 23228最近一个项目要用到ActiveMq,并且需要最大程度的保证消息 ... -
ActiveMQ stop inactivity read check
2008-09-17 16:01 10688You can do the following to fix ... -
WSAD环境下JMS异步通信全攻略 (3)
2008-09-11 14:18 32333.5 消息驱动的Bean 在前文讨论JMS消息接收处理逻 ... -
WSAD环境下JMS异步通信全攻略 (2)
2008-09-11 13:58 3779三、JMS P2P编程 在JMS P2P通信方式中,发送程 ... -
WSAD环境下JMS异步通信全攻略 (1)
2008-09-11 13:57 4723一、JMS基本概念 1.1 P2P通信 1.2 Pub ... -
topicpublisher (jms)
2008-09-10 18:55 2927目的地类型JNDI名字连接工厂类型Topic/Queuejav ... -
ProducerTool /MessageBroker /getConnectionFactoryF
2008-09-10 18:12 2489lib: jms1.1.jar activemq-all-5. ... -
activemq例子代码 发送BytesMessage消息
2008-09-10 13:55 18391import javax.jms.Connection; im ... -
ActiveMQ in Action(7)
2008-09-10 13:44 3953ActiveMQ in Action(7) 关键字 ... -
ActiveMQ in Action(6)
2008-09-10 13:43 3740ActiveMQ in Action(6) 关键字: acti ... -
ActiveMQ in Action(5)
2008-09-10 13:42 3930ActiveMQ in Action(5) 关键字: acti ... -
ActiveMQ in Action(4)
2008-09-10 13:40 3482ActiveMQ in Action(4) 关键字: acti ... -
ActiveMQ in Action(3)
2008-09-10 13:39 3682ActiveMQ in Action(3) 关键字: acti ... -
ActiveMQ in Action(2)
2008-09-10 13:38 4213ActiveMQ in Action(2) 关键字: acti ... -
ActiveMQ in Action(1)
2008-09-10 13:37 5841ActiveMQ in Action(1) 关键字: acti ... -
为ActiveMQ服务器添加简单验证机制
2008-09-09 23:48 4200为ActiveMQ服务器添加简单验证机制 关键字: Java, ... -
Sender/receiver 消息
2008-09-09 20:28 2135Sender:import java.io.BufferedR ... -
activema.xml 配置
2008-09-09 17:44 3824/***作者:andyao,email:andyaoy@gma ... -
JMX 与系统管理
2008-09-08 10:52 1867Java SE 6 新特性: JMX 与系统管理 ...
相关推荐
总之,这个示例程序将帮助你理解如何在不同的消息队列系统中使用JMS API进行消息通信,包括设置服务器配置、创建和管理连接、发送和接收消息等核心操作。这对于构建可扩展的、健壮的分布式系统至关重要。
因此,一个完整的WebSocket连接URL可能是这样的:"ws://activemq服务器地址:61614/websocket"。 为了通过WebSocket接收ActiveMQ的消息,客户端需要实现WebSocket的API,并配置相应的连接参数。这通常涉及到创建...
ActiveMQ 是一个开源的消息中间件,它遵循Java消息服务(JMS)标准,为企业级应用程序提供高效率、可扩展和可靠的异步通信解决方案。在这个"ActiveMQ 教学视频/教程 /附带笔记等资源"的压缩包中,你将找到一系列关于...
ActiveMQ是Apache软件基金会开发的一个开源消息传递平台,支持多种协议,包括NMS(.NET Messaging Service),它是专门为.NET平台设计的ActiveMQ接口。 首先,我们需要了解发布/订阅模式。在这种模式下,生产者...
1. **ActiveMQ**: Apache ActiveMQ是Apache软件基金会开发的一个开源消息中间件,遵循JMS(Java Message Service)规范。它允许应用程序通过消息传递进行通信,从而解耦生产者和消费者,提高系统的灵活性和可扩展性...
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
ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能强大的消息代理,支持多种协议,包括AMQP、STOMP、MQTT等。在企业级应用中,为了保证服务的高可用性和数据的一致性,通常会采用集群部署。本示例将详细讲解...
以下是一个简单的配置示例: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amq="http://activemq.apache.org/schema/core"...
将activemq文件夹剪切到/usr目录下,然后打开终端,输入`gedit /usr/activemq/bin/activemq`命令,以打开activemq文件。在文件中添加以下代码: ``` ### BEGIN INIT INFO # Provides: activemq # Required-Start: $...
在本项目中,我们探讨的是如何使用SpringBoot集成Apache ActiveMQ来构建一个生产者和消费者的应用。SpringBoot以其简洁的配置和快速启动特性,成为现代Java应用开发的首选框架之一,而ActiveMQ则是流行的消息中间件...
1. **Message**: JMS消息是数据的载体,它可以从一个应用程序发送到另一个应用程序。消息可以是文本、二进制数据或自定义对象。 2. **MessageProducer**: 这个接口用于创建和发送消息到目的地。开发者可以通过调用...
ActiveMQ是Apache软件基金会的一个项目,它支持Java消息服务(JMS)1.1规范,并且是一个用Java编写的、支持多语言客户端开发的消息中间件产品。ActiveMQ以其支持多种编程语言开发的客户端而著称,使得开发者可以使用...
在Linux上安装Apache ActiveMQ通常涉及下载最新版本的zip文件,然后将其解压到一个合适的目录。你可以通过访问Apache官方网站获取最新的版本。使用`wget`命令下载,例如: ``` wget ...
ActiveMQ路由配置是Apache ActiveMQ项目中的一种重要配置方式,它依赖另一个Apache项目Camel。ActiveMQ集成了Camel,启动时同时会启动Camel。通过Camel Web Console可以进行Routing配置。 使用Camel Choice进行配置...
本教程将引导你通过一个简单的入门案例了解如何使用ActiveMQ实现生产者与消费者的模式。 首先,我们需要了解ActiveMQ的基本概念。在消息队列中,生产者是发送消息的实体,而消费者则是接收和处理这些消息的实体。...
创建一个指向ActiveMQ启动脚本的软链接,并将其放置在`/etc/init.d/`目录下: ```bash ln -s /usr/local/apache-activemq/bin/activemq /etc/init.d/ chmod +x /etc/init.d/activemq chkconfig --add activemq ...
1. 创建一个新的 Maven 项目:在你的 IDE(如 IntelliJ IDEA 或 Eclipse)中,选择创建一个新的 Maven 项目。 2. 配置 POM.xml:在项目的根目录下,找到并打开 `pom.xml` 文件,添加以下依赖,用于引入 ActiveMQ ...
本文将以“activemq+spring demo”为例,深入探讨如何将Apache ActiveMQ与Spring框架进行整合,并通过一个简单的示例来展示其实现过程。 首先,我们需要了解ActiveMQ。ActiveMQ是Apache软件基金会开发的一个开放源...