【activemq artemis】消息持久化——文件系统以及jdbc

 

说明文档主要翻译自官方文档,关键环境的配置我加入一些描述和截图,整体配置还是挺顺利。

 

警告:Apache ActiveMQ Artemis JDBC持久性存储正在开发中,包含在其中用于评估。

Apache ActiveMQ Artemis JDBC 持久层提供了使用数据库存储代理状态(消息、地址和其他应用程序状态)的能力。

N、 B.JDBC持久层当前不支持地址完整策略分页(请参阅:关于分页的部分)。

文件日志是 ActiveMQ Artemis 推荐使用的配置,因为它提供了更高的性能,并且更加成熟。JDBC持久层的目标是那些必须使用数据库的用户,例如由于公司内部策略的原因。

ActiveMQ Artemis目前支持的数据库供应商数量有限(较旧的版本可以工作,但里程数可能有所不同):

PostgreSQL 9.4.x版

MySQL 5.7.x版本

ApacheDerby10.11.1.1版

JDBC存储使用JDBC连接将消息和绑定数据存储在数据库表中的记录中。存储在数据库表中的数据使用Apache ActiveMQ Artemis内部编码进行编码

 

jdbc 依赖得 添加运行时依赖项

添加运行时依赖项

运行时依赖项(如转移、转换器、代理插件、JDBC驱动程序、密码解码器等)必须在运行时由代理访问。将依赖项打包到jar中,并将其放在代理的类路径上。

这可以通过将jar文件放在代理发行版本身的lib目录或代理实例的lib目录中来完成。

默认情况下,代理实例没有lib目录,因此可能需要创建它。它应该与bin、data、log等目录放在“顶层”。

在与bin同级的目录里放入mysql驱动器

 

 

配置JDBC持久性

要将Apache ActiveMQ Artemis配置为使用数据库来保存消息和绑定数据,必须执行两件事。

请参阅有关添加运行时依赖项的文档,以了解如何使JDBC驱动程序对代理可用。

在broker.xml文件<core>元素下的配置文件。例如:

<store>
<database-store>
<jdbc-connection-url>jdbc:mysql://xxxx/monitodb?relaxAutoCommit=true</jdbc-connection-url>
<jdbc-user>用户名</jdbc-user>
<jdbc-password>密码</jdbc-password>
<bindings-table-name>atmq_bind</bindings-table-name>
<message-table-name>atmq_msg</message-table-name>
<page-store-table-name>atmq_page</page-store-table-name>
<large-message-table-name>atmq_large_msg</large-message-table-name>
<node-manager-store-table-name>atmq_node_manager</node-manager-store-table-name>
<jdbc-driver-class-name>com.mysql.jdbc.Driver</jdbc-driver-class-name>
</database-store>
</store>

  

 

jdbc-connection-url

 

数据库服务器的完整JDBC连接URL。连接url应该包含所有配置参数和数据库名称。注意:使用XML配置文件配置服务器时,请确保转义任何非法字符;例如,“&”在JDBC连接url中是典型的,应转义为“&”。

 

bindings-table-name

 

将为ActiveMQ Artemis服务器保留绑定数据的表的名称。指定表名允许用户在多个服务器之间共享单个数据库,而不受干扰。

 

message-table-name

 

将为ActiveMQ Artemis服务器保留绑定数据的表的名称。指定表名允许用户在多个服务器之间共享单个数据库,而不受干扰。

 

large-message-table-name

 

将为ActiveMQ Artemis服务器保留消息和相关数据的表的名称。指定表名允许用户在多个服务器之间共享单个数据库,而不受干扰。

 page-store-table-name

 存放页面存储目录信息的表的名称。请注意,每个地址都有自己的页表,该页表将使用此名称并附加一个最多20个字符的唯一id。

 node-manager-store-table-name

 将为ActiveMQ Artemis服务器保留HA共享存储锁定(即实时和备份)和HA相关数据的表的名称。指定表名允许用户在多个服务器之间共享单个数据库,而不受干扰。每个共享存储区实时/备份对必须使用相同的表名,并且不支持在多个(和不相关的)实时/备份对之间共享同一个表。

 jdbc-driver-class-name

所需数据库驱动程序的完全限定类名。

jdbc-network-timeout 

JDBC网络连接超时(毫秒)。默认值为20000毫秒(即20秒)。使用共享存储时,建议将其设置为小于或等于jdbc锁过期时间。

 jdbc-lock-renew-period

 JDBC锁的保持活动服务的周期(毫秒)。默认值为2000毫秒(即2秒)。

 jdbc-lock-expiration

 以毫秒为单位的JDBC锁被认为在不保持其活动状态下有效。默认值为20000毫秒(即20秒)。

 jdbc-journal-sync-period

 日志将与JDBC同步的时间(毫秒)。默认值为5毫秒。

 

posted @ 2020-05-18 15:23  Bill he  阅读(884)  评论(0编辑  收藏  举报