ActiveMQ(3)-ActiveMQ+MySQL持久化
来源:互联网 发布:护理论文在知检索 编辑:程序博客网 时间:2024/05/20 08:22
习惯了将数据保存到硬盘中,放在内存中难免会让人感觉到不安全。所以本篇演示一下如何将MQ中的数据吃就好到mysql数据库中。
ActiveMQ默认的持久化数据库为kahaDB,需要添加一些配置才可以完成操作。
1.修改配置文件
打开activemq.xml
做如下修改,dataSource名可以随机获取,这里使用mysql,所以使用my-ds
配置完成后,添加mysql的配置,id为上面的dataSource值,mysql数据库为activemq自行创建。
2.添加mysql驱动
准备好mysql驱动,打开activemq安装目录下的lib文件夹,将mysql驱动拷贝到该目录下。重启activemq服务。
3.创建生产者
创建生产者类,设置DeliveryMode为DeliveryMode.PERSISTENT
package com.mq.activemq_01.jdbc;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MapMessage;import javax.jms.MessageProducer;import javax.jms.Session;import org.apache.activemq.ActiveMQConnectionFactory;public class Producer { private ConnectionFactory connectionFactory; private Connection connection; private Session session; private MessageProducer messageProducer; public Producer(){ try { this.connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616"); this.connection = this.connectionFactory.createConnection(); this.connection.start(); this.session = this.connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); this.messageProducer = this.session.createProducer(null); } catch (Exception e) { // TODO: handle exception } } public void send1(){ try { Destination destination = this.session.createQueue("one"); MapMessage msg1 = this.session.createMapMessage(); msg1.setString("loginName", "zs"); msg1.setString("name", "zhangsan"); msg1.setString("password", "123456"); msg1.setInt("gender", 1); msg1.setInt("age", 9); msg1.setStringProperty("receiver", "A"); MapMessage msg2 = this.session.createMapMessage(); msg2.setString("loginName", "zs"); msg2.setString("name", "zhangsan"); msg2.setString("password", "123456"); msg2.setInt("gender", 1); msg2.setInt("age", 19); msg2.setStringProperty("receiver", "B"); MapMessage msg3 = this.session.createMapMessage(); msg3.setString("loginName", "zs"); msg3.setString("name", "zhangsan"); msg3.setString("password", "123456"); msg3.setInt("gender", 1); msg3.setInt("age", 9); msg3.setStringProperty("receiver", "A"); MapMessage msg4 = this.session.createMapMessage(); msg4.setString("loginName", "ls"); msg4.setString("name", "lisi"); msg4.setString("password", "123456"); msg4.setInt("age", 29); msg4.setStringProperty("receiver", "A"); this.messageProducer.send(destination, msg1, DeliveryMode.PERSISTENT, 2, 1000*60*2); this.messageProducer.send(destination, msg2, DeliveryMode.PERSISTENT, 3, 1000*60*2); this.messageProducer.send(destination, msg3, DeliveryMode.PERSISTENT, 7, 1000*60*2); this.messageProducer.send(destination, msg4, DeliveryMode.PERSISTENT, 8, 1000*60*2); } catch (JMSException e) { e.printStackTrace(); } } public static void main(String[] args) { Producer p = new Producer(); p.send1(); }}
4.查看持久化数据
执行3中程序,打开mysql数据客户端
持久化内容存放在activemq_msgs表中,打开表如下
这里使用的是MapMessage存放到数据库中为blog类型
阅读全文
0 0
- ActiveMQ(3)-ActiveMQ+MySQL持久化
- activemq与mysql持久化
- activeMQ持久化mysql配置
- Apache ActiveMQ 持久化到MySQL数据库
- activemq spring mysql实现持久化
- ActiveMQ消息持久化到Mysql数据库
- ActiveMQ使用笔记(二)ActiveMQ消息持久化(3)
- ActiveMQ持久化测试
- ActiveMQ 数据库持久化
- activemq持久化
- ActiveMQ持久化方式
- ActiveMQ持久化方式
- activemq持久化设置
- ActiveMQ持久化方式
- ActiveMQ的持久化
- ActiveMq持久化消息
- ActiveMQ持久化方式
- ActiveMQ持久化方式
- Event 2.4 跳转接收消息
- javascript中用=给数组赋值
- 【二分图多重匹配 && Dinic】POJ
- 设计模式—观察者模式
- 多线程的问题:如何保证界面的分页参数安全的传递到dao层?
- ActiveMQ(3)-ActiveMQ+MySQL持久化
- C和指针之二维字符串数组用指针数组、数组指针、二级指针打印
- linux遇到的问题
- 计算并输出两个整数的最大值
- 习题6.1(1)
- read函数读串口数据“分包”问题及解决方案
- 依赖的总结
- Java-继承
- 学习java的总结