【activeMQ】ActiveMQ 发送接收消息(含安装运行测试)
来源:互联网 发布:java设计模式spring 编辑:程序博客网 时间:2024/05/16 06:26
准备工作
下载
下载地址:http://activemq.apache.org/ 我这里使用的版本为当前最新5.8.0。
下载版本有Windows和Linux两个版本,且都分为32位和64位。根据自己需要选择下载。
安装
我这里下载的为windows的32位版本(apache-activemq-5.8.0-bin.zip),下载后直接解压到需要安装的目录或在直接解压到当前目录也可,解压完安装也完成。
解压后目录如上图,里面包含了示例和文档,及所有的jar包。
运行
进入到bin目录(apache-activemq-5.8.0\bin),双击activemq.bat,就会运行,运行截图如下:
此时表示ActiveMQ已经在运行了,当然正常生产环境下可以设置作为服务在后台运行,并且随系统启动而启动。
测试
ActiveMQ自带了一套管理系统,访问http://localhost:8161/admin/,会出现需要输入用户名和密码的页面如下:
默认用户名和密码都是admin,进入后则为主界面:
在这个界面上,我们可以管理队列及其他的一些功能,为了下面的继续,我们在这里创建一个Queue和一个Topic。
点击目录上的Queues进入创建Queue页面,输入Queue名称,点击Create后下面就创建了G2Queue的queue队列。
这里也可以不用这样手工创建,在发送端指定了一个Queue或Topic名字后,会自动创建一个队列,如上面的choice.queue和FirstQueue都是我测试程序时,程序里面指定的Queue名称,自动创建的。
同样的方式创建一个Topic,如下:
需要引用的jar包
<dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.11.2</version></dependency>
发送消息
import java.util.Random; 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 org.apache.activemq.ActiveMQConnectionFactory; public class SendMessage { private static final String url = "tcp://localhost:61616"; private static final String QUEUE_NAME = "G2Queue"; public void sendMessage() throwsJMSException { // JMS 客户端到JMSProvider 的连接 Connection connection = null; try { // 连接工厂,JMS 用它创建连接 // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar ConnectionFactory connectionFactory = newActiveMQConnectionFactory(url); connection = (Connection)connectionFactory.createConnection(); // 启动连接 connection.start(); //Session:发送或接收消息的线程 // 获取session Session session = (Session) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 消息的目的地,消息发送到那个队列 Destination destination = session.createQueue(QUEUE_NAME); //MessageProducer:消息发送者(生产者) // 创建消息发送者 MessageProducer producer =session.createProducer(destination); // 设置是否持久化 //DeliveryMode.NON_PERSISTENT:不持久化 //DeliveryMode.PERSISTENT:持久化 producer.setDeliveryMode(DeliveryMode.PERSISTENT); String msg = ""; int i = 0; do { msg = "第"+i + "次发送的消息:"+new Random(); TextMessagemessage = session.createTextMessage(msg); Thread.sleep(1000); // 发送消息到目的地方 producer.send(message); System.out.println("发送消息:" +msg); i++; } while (i<1000); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { SendMessage sndMsg = newSendMessage(); try { sndMsg.sendMessage(); } catch (Exception ex) { System.out.println(ex.toString()); } }}
运行结果如下:
接收消息
package cn.g2room.mq.test; 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.Session;import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; /** * 消息接收类 * * @createTime:Apr 7, 2013 5:11:11 PM * @author:<a href="mailto:252909344@qq.com">迷蝶</a> * @version:0.1 *@lastVersion: 0.1 * @updateTime: *@updateAuthor: <a href="mailto:252909344@qq.com">迷蝶</a> * @changesSum: * */public class ReceiveMessage { privatestatic final String url = "tcp://localhost:61616"; privatestatic final String QUEUE_NAME = "G2Queue"; publicvoid receiveMessage() { Connectionconnection = null; try{ try{ ConnectionFactoryconnectionFactory = new ActiveMQConnectionFactory( url); connection= connectionFactory.createConnection(); }catch (Exception e) { System.out.println(e.toString()); } connection.start(); Sessionsession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destinationdestination = session.createQueue(QUEUE_NAME); //消息接收者,也就是消费者 MessageConsumerconsumer = session.createConsumer(destination); consumeMessagesAndClose(connection,session, consumer); }catch (Exception e) { System.out.println(e.toString()); } } /** * 接收和关闭消息,如遇到消息内容为close则,关闭连接 * * @param connection JMS 客户端到JMSProvider 的连接 * @param session 发送或接收消息的线程 * @param consumer 消息接收对象 * @throws JMSException * @auther <ahref="mailto:252909344@qq.com">迷蝶</a> * Apr 8, 2013 10:31:55 AM */ protectedvoid consumeMessagesAndClose(Connection connection, Sessionsession, MessageConsumer consumer) throws JMSException { do{ Messagemessage = consumer.receive(1000); if("close".equals(message)){ consumer.close(); session.close(); connection.close(); } if(message != null) { onMessage(message); } }while (true); } publicvoid onMessage(Message message) { try{ if(message instanceof TextMessage) { TextMessagetxtMsg = (TextMessage) message; Stringmsg = txtMsg.getText(); System.out.println("Received:" + msg); } }catch (Exception e) { e.printStackTrace(); } } publicstatic void main(String args[]) { ReceiveMessagerm = new ReceiveMessage(); rm.receiveMessage(); }}
运行结果如下:
至此结束
本文转自:http://blog.csdn.net/leadergg/article/details/8771218
- 【activeMQ】ActiveMQ 发送接收消息(含安装运行测试)
- activemq安装部署发送接收消息
- 测试接收 ActiveMq 消息
- ActiveMQ使用笔记(三)ActiveMQ消息发送与接收
- ActiveMQ使用笔记(三)ActiveMQ消息发送与接收
- ActiveMQ发送消息与接收消息测试Demo
- 使用ActiveMQ 发送/接收消息
- ActiveMQ消息发送和接收
- ActiveMQ消息发送和接收
- ActiveMQ消息发送和接收
- activemq安装与简单消息发送接收实例
- activemq安装与简单消息发送接收实例
- ActiveMQ 发送消息和接收消息 Demo
- 测试发送 ActiveMq topic消息
- ActiveMQ(一):ActiveMQ入门案例 发送消息和接收消息
- spring activeMQ 整合(一): 一个简单的demo,测试消息的发送与接收
- 使用ActiveMQ 发送/接收消息(没用到框架)
- ActiveMQ 消息的发送和接收
- 大数据
- LeetCode(33)-Search in Rotated Sorted Array
- 华为OJ中级题-单词倒排
- WIFI智能家居控制系统、WIFI温度湿度检测系统
- java运算符
- 【activeMQ】ActiveMQ 发送接收消息(含安装运行测试)
- bat批处理笔记——修改文件类型
- Universal_Image_loader
- 开发笔记(杂)
- Android文件资源(raw/data/asset)的存取
- 转载_关于MTK socket编程的一些经验
- 加锁解锁PHP实现
- 在VS2015上配置OpenCV
- ubuntu下安装pypy