日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

ActiveMQ持久化到mysql

發(fā)布時(shí)間:2024/4/15 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActiveMQ持久化到mysql 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ActiveMQ持久化到mysql

?

配置

1.找到apache-activemq-5.15.2/examples/conf下面的activemq-jdbc-performance.xml

2.打開(kāi)activemq-jdbc-performance.xml,在persistenceAdapter節(jié)點(diǎn)后面添加dataSource="#mysql-ds"

并配置你的數(shù)據(jù)庫(kù)

其實(shí)可以直接更改apache-activemq-5.15.2/conf/activemq.xml的persistenceAdapter節(jié)點(diǎn).配置下數(shù)據(jù)庫(kù)也是可以的

用activemq-jdbc-performance.xml 我的理解應(yīng)該是高性能模式,連都沒(méi)有(這句是添加localhost:8161的管理頁(yè)面,),并且只能用openwire傳輸協(xié)議,默認(rèn)的配置文件傳輸協(xié)議是全開(kāi)的,如果需要用到其他的傳輸協(xié)議可以自己在transportConnectors節(jié)點(diǎn)上添加

3.把a(bǔ)ctivemq-jdbc-performance.xml復(fù)制到apache-activemq-5.15.2/conf目錄下,從命名為activemq.xml,覆蓋原來(lái)的activemq.xml

4.在對(duì)應(yīng)的數(shù)據(jù)庫(kù)創(chuàng)建activemq庫(kù),然后重啟ActiveMQ

我們這里用debug模式啟動(dòng),提示沒(méi)有mysql的jar包

5.我們?cè)赼pache-activemq-5.15.2/lib下面添加mysql的jar包,再次啟動(dòng),就不會(huì)報(bào)錯(cuò)了

6.這時(shí)可以看到剛才創(chuàng)建的activemq庫(kù)多了三張表,說(shuō)明配置成功了

點(diǎn)對(duì)點(diǎn)測(cè)試

生產(chǎn)者

import javax.jms.Connection; 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 {public static void main(String[] args) { // String user = ActiveMQConnection.DEFAULT_USER; // String password = ActiveMQConnection.DEFAULT_PASSWORD; // String url = ActiveMQConnection.DEFAULT_BROKER_URL;String subject = "test.queue";ConnectionFactory contectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.109:61616");// ConnectionFactory contectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");try{Connection connection = contectionFactory.createConnection();connection.start();Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);Destination destination = session.createQueue(subject);MessageProducer producer = session.createProducer(destination);// producer.setDeliveryMode(DeliveryMode.PERSISTENT);//設(shè)置為持久化for(int i = 0; i < 20;) {TextMessage createTextMessage = session.createTextMessage("這是要發(fā)送的第"+ ++i +"條消息消息");producer.send(createTextMessage);System.out.println("第"+ i +"條消息已發(fā)送");}Thread.sleep(2000);session.commit();session.close();connection.close();}catch (JMSException e) {// e.printStackTrace();}catch (InterruptedException e) {// e.printStackTrace();}}}

消費(fèi)者

import java.util.Date;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.MessageListener; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory;public class Customer {public static void main(String[] args) {// String user = ActiveMQConnection.DEFAULT_USER; // // String password = ActiveMQConnection.DEFAULT_PASSWORD; // // String url = ActiveMQConnection.DEFAULT_BROKER_URL;String subject = "test.queue";ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.109:61616");// ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");Connection connection;try {connection= connectionFactory.createConnection();connection.start();final Session session =connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);Destination destination = session.createQueue(subject);MessageConsumer message = session.createConsumer(destination);message.setMessageListener(new MessageListener() {public void onMessage(Message msg){TextMessage message = (TextMessage) msg;try {System.out.println("--收到消息:" +new Date()+message.getText());session.commit();}catch(JMSException e) {// e.printStackTrace();}}}); // Thread.sleep(30000); // // session.close(); // // Thread.sleep(30000); // // connection.close(); // // Thread.sleep(30000);}catch(Exception e) {// e.printStackTrace();}}}

這時(shí)生產(chǎn)者生產(chǎn)數(shù)據(jù),消費(fèi)者一直不在線,數(shù)據(jù)就會(huì)持久化到數(shù)據(jù)庫(kù)的activemq_msgs表,就算ActiveMQ的服務(wù)掛了,再次啟動(dòng)后,等消費(fèi)者在線了就可以再次獲取生產(chǎn)者生產(chǎn)的數(shù)據(jù)(消費(fèi)之后數(shù)據(jù)庫(kù)的數(shù)據(jù)會(huì)自動(dòng)刪除)

超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的ActiveMQ持久化到mysql的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。