分布式服务框架学习笔记8 ActiveMQ入门使用
来源:互联网 发布:windows私有云软件 编辑:程序博客网 时间:2024/06/05 19:48
测试环境
windows+Eclipse
下载
http://activemq.apache.org/download-archives.html
下载后 打开c:/tools/apache-activemq-5.9.0/bin/activemq.bat启动服务
添加依赖
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.14.1</version> </dependency>
Persistence持久化存储
AMQ Message Store
ActiveMQ 5.0 的缺省持久化存储方式。Kaha Persistence
这是一个专门针对消息持久化的解决方案。它对典型的消息使用模式进行了优化。JDBC Persistence
数据库方式:Apache Derby, Axion, DB2, HSQL, Informix, MaxDB, MySQL, Oracle, Postgresql, SQLServer, Sybase。Disable Persistence
不应用持久化存储。
方法解析
生产者创建过程
消费者消费消息
代码
App.java
package com.whrsmart.ActiveMQ;import javax.jms.JMSException;import org.apache.activemq.ActiveMQConnection;/** * */public class App { public static void main( String[] args ) { String username = "admin1"; String password = "admin1"; String url = ActiveMQConnection.DEFAULT_BROKER_URL; // 创建生产者 Producer producer; try { producer = new Producer(url, username, password); // 生产者产生一条消息 producer.sendMessage("Hello World"); // 创建消费者 Consumer consumer = new Consumer(url, username, password); // 消费者读取一条消息 Object msg = consumer.receive(); // 输出消息内容 System.out.println(msg); producer.close(); consumer.close(); } catch (JMSException e) { e.printStackTrace(); } }}
Consumer.java
package com.whrsmart.ActiveMQ;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;/** * 消费者 * */public class Consumer { /** * 用户名 */ private String username; /** * 密码 */ private String password; /** * 连接地址,host:port,如localhost:8161 */ private String url; /** * 队列名 */ private static final String QUEUE_NAME = "HELLO"; //连接工厂 private ConnectionFactory connectionFactory; //会话 接受或者发送消息的线程 private Session session; //消息的目的地 private Destination destination; //消息消费者 private MessageConsumer messageConsumer; //与MQ的连接 private Connection connection = null; public Consumer(String url, String username, String password) throws JMSException { this.url = url; this.username = username; this.password = password; this.init(); } /** * 初始化方法 * @throws JMSException */ private void init() throws JMSException { // 实例化工厂 connectionFactory = new ActiveMQConnectionFactory( username, password, url); // 获取连接 connection = connectionFactory.createConnection(); // 启动 connection.start(); // 获取session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); // 创建指定队列名的队列 destination = session.createQueue(Consumer.QUEUE_NAME); // 创建消息消费者 messageConsumer = session.createConsumer(destination); } /** * 接收消息 * @throws JMSException */ public String receive() throws JMSException { TextMessage msg = (TextMessage) messageConsumer.receive(5000); if(msg == null) { return null; } return msg.getText(); } public void close() throws JMSException { session.close(); connection.close(); }}
Producer.java
package com.whrsmart.ActiveMQ;import javax.jms.ConnectionFactory;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 Producer implements Cloneable{ /** * 用户名 */ private String username; /** * 密码 */ private String password; /** * 连接地址,host:port,如localhost:8161 */ private String url; /** * 队列名 */ private static final String QUEUE_NAME = "HELLO"; //连接工厂 private ConnectionFactory connectionFactory; //会话 接受或者发送消息的线程 private Session session; //消息的目的地 private Destination destination; //消息生产者 private MessageProducer messageProducer; //与MQ的连接 private javax.jms.Connection connection = null; public Producer(String url, String username, String password) throws JMSException { this.url = url; this.username = username; this.password = password; this.init(); } /** * 初始化方法 * @throws JMSException */ private void init() throws JMSException { // 实例化工厂 connectionFactory = new ActiveMQConnectionFactory(username, password, url); // 获取连接 connection = connectionFactory.createConnection(); // 启动 connection.start(); // 获取session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建指定队列名的队列 destination = session.createQueue(Producer.QUEUE_NAME); // 创建消息生产者 messageProducer = session.createProducer(destination); } /** * 发送消息 * @param data 数据 * @throws JMSException */ public void sendMessage(String data) throws JMSException { // 创建一个Message TextMessage msg = session.createTextMessage(data); // 通过消息发送者进行消息发送 this.messageProducer.send(msg); } public void close() throws JMSException { session.close(); connection.close(); }}
本文参考:
http://www.tuicool.com/articles/EjyqA3R
0 0
- 分布式服务框架学习笔记8 ActiveMQ入门使用
- 分布式服务框架学习笔记8 ActiveMQ入门2 监听及管理
- 分布式服务框架学习笔记8 ActiveMQ入门2 发布/订阅模式
- 分布式服务框架学习笔记7 Thrift入门试用
- 二、分布式服务框架Zookeeper学习笔记
- 阿里巴巴分布式服务框架dubbo学习笔记
- 分布式服务框架学习笔记 01
- ActiveMQ入门学习笔记
- 分布式服务框架学习笔记2 常用的分布式服务框架 与 通信框架选择
- 分布式服务框架学习笔记4 服务路由
- 分布式服务框架学习笔记4 服务路由
- Dubbo分布式服务框架入门
- Dubbo分布式服务框架入门
- 分布式服务框架学习笔记1 应用架构演进
- 分布式服务框架学习笔记6 Motan试用
- 分布式服务框架学习笔记5 消息队列
- 分布式服务框架HSF学习
- 分布式服务框架 dubbo/dubbox 入门示例
- 蟠桃记
- 知识库--Limitations of STM 【高并发写 not in favor】(137)
- T-SQL语句添加约束
- 使用forever运行nodejs应用
- otg.c -- USB OTG utility code Copyright (C) 2004 Texas Instruments
- 分布式服务框架学习笔记8 ActiveMQ入门使用
- Samba 软连接文件无法访问,拒绝访问。【已解决】
- Google搜索
- IntelliJ IDEA 2016.3.5 基础配置及部分问题(持续更新中...)
- NetRipper源码のDLL
- 【学术篇】浅谈各种邻接表
- CSS:清除浮动
- Redis特性一览
- 数据结构----归并排序(转载)