ActiveMQ持久化到mysql
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)題。
- 上一篇: weedfs文件使用记录
- 下一篇: linux cmake编译源码,linu