默认情况下,日志查看地址:data/activemq.log
ActiveMQ支持的传输协议

client端和broker端的通讯协议
TCP(默认)、UDP 、NIO、SSL、Http(s)、vm
可以在 conf/activemq.xml查看或者添加协议。ActiveMQ持久化存储

1. kahaDB 默认的存储方式


优势:消息存储容量高,恢复数据快。
默认的配置在activemq的conf/activemq.xml文件下。如图
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>2. AMQ 基于文件的存储方式
优势:写入速度很快,容易恢复。
文件默认大小是32M.
默认的配置在activemq的conf/activemq.xml文件下。
<persistenceAdapter>
<amqPersistenceAdapter directory="" maxFileLength=""/>
</persistenceAdapter>3. JDBC 基于数据库的存储



3.1,实现你要配置JDBC,要在conf/activemq.xml中配置数据库源和修改存储方式:
<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/activemq"/>
<property name="username" value="root"/>
<property name="password" value="root123"/>
</bean>
<persistenceAdapter>
<!-- <kahaDB directory="${activemq.data}/kahadb"/>-->
<jdbcPersistenceAdapter dataSource="#mysqlDataSource" createTablesOnStartup="true"/>
</persistenceAdapter>
3.2,在lib下添加jar包:commons-dbcp,commons-pool,mysql-connector-java等3个jar包。
3.3,sh bin/activemq start
3.4,此时在数据库中会有如下表自动生成:
ACTIVEMQ_ACKS : 存储持久订阅的信息
ACTIVEMQ_LOCK : 锁表(用来做集群的时候,实现master选举的表)
ACTIVEMQ_MSGS : 消息表
3.5,当我们使用生产者生产消息时,会在ACTIVEMQ_MSGS产生数据
3.6,当我们使用消费者消费该消息时,ACTIVEMQ_MSGS表会去掉该消息。
3.7,当然这里的JDBC store方式对性能不太好,可能导致最后的瓶颈都在数据库这块。
3.8,因此还提供了JDBC message store with ActiveMQ journal方式(就是提供缓存的方式不实时从数据库中操作数据,而是通过缓存的方式)
JDBC Message store with activeMQ journal
1. 引入了快速缓存机制,缓存到Log文件中。
2. 性能会比jdbc store要好。
3. JDBC Message store with activeMQ journal 不能应用于master/slave模式。4.Memory基于内存的存储方式
5.LevelDB(activeMQ5.8 以后引入的持久化策略。通常用于集群配置)下节处理
ActiveMQ的网络连接
activeMQ如果要实现扩展性和高可用性的要求的话,就需要用用到网络连接模式丢失的消息的处理办法

从5.6版本开始,在destinationPolicy上新增了一个选项replayWhenNoConsumers属性,
这个属性可以用来解决当broker1上有需要转发的消息但是没有消费时,把消息回流到它原始的broker。
同时把enableAudit设置为false,为了防止消息回流后被当作重复消息而不被分发。
分别在两台服务器通过如上在activeMQ.xml中配置即可完成消息回流处理。NetworkConnector

主要用来配置broker与broker之间的通信连接,服务器S1和S2通过NewworkConnector相连。静态网络连接



修改activemq.xml,增加如下内容:
<networkConnectors>
<networkConnector uri="static://(tcp://192.168.254.128:61616,192.168.254.133:61616)"></networkConnector>
</networkConnectors>
注意:
先检查防火墙,不然会有图1报错。
其次,配置完重启后查看管理平台network会看到另外一台服务器的数据。
(实现双机热备,同时提供服务。即生产者的消息数据发送给broker1后,连接broker2的消费者也能消费这些数据,这时这些消息会从broker1转移到broker2,若此时只是消费了其中一部分消息,那么就会剩余部分消息到broker2,这时用连接broker1的消费者去消费是消费不了的。
这时,broker2当机了,消息就丢失了)动态网络连接 待续

文章转载自丁锅笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




