如何保证消息的可靠性
回答这个问题主要从持久化,事务,签收这几个方面入手
消息持久化的核心代码:
//queue模式的消息持久化 默认是持久化的 producer.setDeliveryMode(DeliveryMode.PERSISTENT);/** * topic模式的持久化 */Topic topic = session.createTopic(TOPIC_NAME);ActiveMQMessageProducer producer = (ActiveMQMessageProducer)session.createProducer(topic);producer.setDeliveryMode(DeliveryMode.PERSISTENT);connection.start();事务的核心代码(偏生产者):
//参数设置成trueconnection.createSession(false, Session.AUTO_ACKNOWLEDGE);//事务提交session.commit();签收的核心代码(偏消费者):
//参数设置成手动提交connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);//消息签收message.acknowledge();注意:若是既开启事务,又开启手动签收,以事务为准,只要事务被提交了也默认消息被签收了
性能提升:
1.利用nio的协议比tcp的性能高,
- 配置方式:在conf目录下activemq.xml照着下面配置
<broker>...<transportConnectors><transportConnector name="nio" uri="nio://0.0.0.0:61616"/></<transportConnectors>...</broker>- 第二步是代码访问方式由tcp改为nio
//创建工厂ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("nio://127.0.0.1:61616");2.jdbc+Journaling提高只有jdbc持久化的性能,它在做持久化入数据库之前,会先将数据保存到Journaling文件中,之后才慢慢同步到数据库中,等于中间加了一层缓冲层 。- 把数据库mysql的驱动包放到lib目录下
- 配置方式:在conf目录下activemq.xml照着下面配置,其中有个createTablesOnStartup属性,默认值是true,表示每次启动后去数据库自动建表
<persistenceAdapter><kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> //上面是默认配置找到改成下面的配置<persistenceAdapter><journalPersistenceAdapterFactory journalLogFiles="5" dataDirectory="${basedir}/activemq-data" dataSource="#mysql-ds"/></persistenceAdapter> //下面的代码写在<beans>节点中<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>
推荐阅读
- 下一站江湖忠奸奇遇怎么完成 下一站江湖忠奸奇遇完成攻略
- 加油站大亨怎么赚钱 加油站大亨赚钱方法分享
- 下一站江湖白首太玄经怎么获得 下一站江湖白首太玄经获得攻略
- 下一站江湖吴婶支线怎么做 下一站江湖吴婶支线任务攻略
- 下一站江湖窃贼支线怎么做 下一站江湖窃贼支线任务攻略
- 下一站江湖曲昊支线怎么做 下一站江湖曲昊支线任务攻略
- 下一站江湖镖局支线怎么做 下一站江湖镖局支线任务攻略
- 下一站江湖刁延支线怎么做 下一站江湖刁延支线任务攻略
- 加油站大亨修改器分享 加油站大亨修改器怎么用
- 加油站大亨怎么保持清洁 加油站大亨保持清洁技巧分享
