如何保證消息的可靠性
回答這個問題主要從持久化,事務,簽收這幾個方面入手
消息持久化的核心代碼:
//queue模式的消息持久化 默認是持久化的 producer.setDeliveryMode(DeliveryMode.PERSISTENT);/** * topic模式的持久化 */Topic topic = session.createTopic(TOPIC_NAME);ActiveMQMessageProducer producer = (ActiveMQMessageProducer)session.createProducer(topic);producer.setDeliveryMode(DeliveryMode.PERSISTENT);connection.start();事務的核心代碼(偏生產(chǎn)者):
//參數(shù)設置成trueconnection.createSession(false, Session.AUTO_ACKNOWLEDGE);//事務提交session.commit();簽收的核心代碼(偏消費者):
//參數(shù)設置成手動提交connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);//消息簽收message.acknowledge();注意:若是既開啟事務,又開啟手動簽收,以事務為準,只要事務被提交了也默認消息被簽收了
性能提升:
1.利用nio的協(xié)議比tcp的性能高,
- 配置方式:在conf目錄下activemq.xml照著下面配置
<broker>...<transportConnectors><transportConnector name="nio" uri="nio://0.0.0.0:61616"/></<transportConnectors>...</broker>- 第二步是代碼訪問方式由tcp改為nio
//創(chuàng)建工廠ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("nio://127.0.0.1:61616");2.jdbc+Journaling提高只有jdbc持久化的性能,它在做持久化入數(shù)據(jù)庫之前,會先將數(shù)據(jù)保存到Journaling文件中,之后才慢慢同步到數(shù)據(jù)庫中,等于中間加了一層緩沖層 。- 把數(shù)據(jù)庫mysql的驅動包放到lib目錄下
- 配置方式:在conf目錄下activemq.xml照著下面配置,其中有個createTablesOnStartup屬性,默認值是true,表示每次啟動后去數(shù)據(jù)庫自動建表
<persistenceAdapter><kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> //上面是默認配置找到改成下面的配置<persistenceAdapter><journalPersistenceAdapterFactory journalLogFiles="5" dataDirectory="${basedir}/activemq-data" dataSource="#mysql-ds"/></persistenceAdapter> //下面的代碼寫在<beans>節(jié)點中<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="https://www.jinnalai.com/fenxiang/com.mysql.jdbc.Driver"/><property name="url" value="https://www.jinnalai.com/fenxiang/jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/><property name="username" value="https://www.jinnalai.com/fenxiang/activemq"/><property name="password" value="https://www.jinnalai.com/fenxiang/activemq"/><property name="poolPreparedStatements" value="https://www.jinnalai.com/fenxiang/true"/></bean>
推薦閱讀
- 下一站江湖忠奸奇遇怎么完成 下一站江湖忠奸奇遇完成攻略
- 加油站大亨怎么賺錢 加油站大亨賺錢方法分享
- 下一站江湖白首太玄經(jīng)怎么獲得 下一站江湖白首太玄經(jīng)獲得攻略
- 下一站江湖吳嬸支線怎么做 下一站江湖吳嬸支線任務攻略
- 下一站江湖竊賊支線怎么做 下一站江湖竊賊支線任務攻略
- 下一站江湖曲昊支線怎么做 下一站江湖曲昊支線任務攻略
- 下一站江湖鏢局支線怎么做 下一站江湖鏢局支線任務攻略
- 下一站江湖刁延支線怎么做 下一站江湖刁延支線任務攻略
- 加油站大亨修改器分享 加油站大亨修改器怎么用
- 加油站大亨怎么保持清潔 加油站大亨保持清潔技巧分享
