ActiveMQ中如果使用mysql innodb的同时,开启了binlog,那么在ack消息的时候,日志里就可会报错:java.sql.SQLException: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
这是因为,mysql默认的binlog_format是STATEMENT,而在READ COMMITTED或READ UNCOMMITTED隔离级别下,innodb只能使用的binlog_format是ROW。
而在ActiveMQ的store JDBC实现中(TransactionContext),为了提高并发性能,使用的是READ UNCOMMITTED:
- // a cheap dirty level that we can live with
- private int transactionIsolation = Connection.TRANSACTION_READ_UNCOMMITTED;
解决办法有两个:
1、在mysql里设置binlog_format为ROW,此时binlog会增大,但是一般来说对数据复制支持的更好,建议单机高性能环境下使用。
2、在activemq.xml的jdbcPersistenceAdapter里配置transactionIsolation=“4”,即TRANSACTION_REPEATABLE_READ,此时事务更严格,会影响性能,建议在集群、强实时一致、不强调单机性能的情况下使用。
相关推荐
本主题主要探讨如何将ActiveMQ配置为使用MySQL 8作为其持久化存储方式,以及在这个过程中所需的Jar包。 1. **ActiveMQ与持久化**: - ActiveMQ允许用户选择不同的持久化机制,包括文件系统(KahaDB)和关系数据库...
标题中的“ActiveMQ MySQL 持久化”指的是在使用ActiveMQ消息中间件时,将消息数据存储到MySQL数据库中以实现数据的持久化。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的消息代理,支持多种消息...
标题中的“activemq-5.15.15 JDBC持久化mysql8.0+的activemq.xml”指的是Apache ActiveMQ的一个特定版本(5.15.15)配置文件,该配置文件用于实现消息队列的数据持久化,通过JDBC连接MySQL 8.0以上的版本。ActiveMQ...
本篇主要围绕"ActiveMQ中Topic持久化Demo"进行深入探讨,旨在帮助读者理解如何在ActiveMQ中实现Topic的持久化。 ActiveMQ 是一个功能强大的消息代理,支持多种协议,包括 OpenWire、STOMP、AMQP 和 MQTT。它提供了...
在本示例中,我们将深入探讨如何将Spring框架与ActiveMQ集成,以便实现消息队列(Queue)和主题(Topic)的功能,并确保消息的持久化。ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它支持多种消息协议,如...
**ActiveMQ订阅模式持久化实现** ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它遵循JMS(Java Message Service)规范,提供了多种消息传递模式,包括发布/订阅(Publish/Subscribe)模式。在发布/订阅...
ActiveMQ 持久化是指将消息队列持久化到数据库或文件中,以便在断电或崩溃后恢复消息队列。可以使用 Apache ActiveMQ 的持久化机制,例如使用 KahaDB 或 AMQP 等。 集群环境 ActiveMQ 集群环境是指多个 ActiveMQ ...
标题中的"activemq持久化jdbc所需jar包.zip"指的是Apache ActiveMQ消息中间件在使用JDBC(Java Database Connectivity)进行消息持久化时所需的库文件集合。ActiveMQ是一款开源、高性能、跨语言的企业级消息代理,它...
在实际应用中,使用MySQL作为ActiveMQ的持久化存储可以带来诸多好处,例如利用数据库的备份和恢复机制,提高系统的整体可靠性和可扩展性。但是,这也意味着需要考虑数据库性能和容量规划,因为ActiveMQ的所有消息...
Apache ActiveMQ是业界广泛使用的开源消息中间件,它支持多种协议,如AMQP、STOMP、MQTT等,且提供了消息持久化功能,确保在系统故障后仍能恢复消息,保持数据完整性。本主题主要围绕“activemq消息持久化所需Jar包...
运行环境是 win10 64位系统,开发环境是VS2015 ,Qt 5.11.2。开发activemq发送程序,遇到问题 (1)Qt5AxContainer.lib error LNK2038: 检测到“_ITERATOR_...activemq::library::ActiveMQCPP::initializeLibrary();
消息队列:ActiveMQ:ActiveMQ消息持久化机制.docx
本主题将详细讲解在ActiveMQ中使用JDBC持久化所需的jar包,以及如何进行配置。 首先,我们要明确的是,ActiveMQ内置了一个基于KahaDB的默认持久化机制,但用户可以根据需求选择JDBC持久化。JDBC持久化需要以下关键...
spring +activemq topic消息持久化订阅实例,整个项目中有activemq和spring的整合的所有实例,topic的持久化配置是在ApplicationContext3C、ApplicationContext3C2以及ApplicationContext3P三个中,消息生产者:...
1. **配置文件设置**:ActiveMQ 的持久化策略通常在配置文件中定义,如 `activemq.xml`。配置文件包含了关于如何存储和恢复消息的信息。在提供的代码片段中,可以看到配置文件使用了 Spring XML 格式,这是 ActiveMQ...
在本文中,我们将深入探讨ActiveMQ的使用、安装及其初始化页面的设置。 首先,ActiveMQ是一个高性能、可靠的分布式消息传递系统,允许应用程序之间通过消息进行异步通信。这种通信模式能够提高系统的可伸缩性和解耦...
在Java中,连接MySQL数据库通常使用的是MySQL Connector/J,这是一个完全兼容JDBC API的驱动程序。在提供的压缩包“mysql-connector-java-5.1.29”中,我们可以找到以下关键内容: 1. **jar文件**:`mysql-...
总之,"Active mq jdbc持久化所需要的包.rar"提供了使用MySQL数据库进行ActiveMQ消息持久化的必要组件。正确配置并使用这些组件,可以在保持消息可靠性的同时,利用数据库的优势来管理和保护消息数据。
"ActiveMQ in Action"是一本权威的ActiveMQ专著,深入探讨了ActiveMQ的高级特性,如集群、持久化、网络连接等,适合已经有一定基础并希望深入了解的开发者。 通过这些资料,用户可以系统性地学习和掌握ActiveMQ,...