transactions - 在模式隔离的 Multi-Tenancy 应用程序中设计/实现事务性发件箱模式

标签 transactions multi-tenant transactionscope distributed-transactions outbox-pattern

我有一个 Multi-Tenancy 应用程序。租户数据基于模式隔离。

我想实现一个事务性发件箱模式,我想将事件存储在一个表中(在同一事务中),然后稍后通过作业发送事件。

我计划在每个租户模式中保留事件表,以便它可以在同一个事务中更新。我无法将事件表保留在公共(public)(应用程序)模式中,因为这样我就无法在同一事务中更新表...

现在我的问题是作业(基于 quartz/spring)如何知道需要检查哪些所有模式的事件?可以有多个租户架构,其中没有要处理的事件。

最佳答案

一种方法是用 CDC(MySQL 的 bin 日志)替换 cron 作业。您可以在 CDC 处理程序中进行整个处理,也可以使用它来更新一些中央表,以跟踪哪个租户有新消息。

关于transactions - 在模式隔离的 Multi-Tenancy 应用程序中设计/实现事务性发件箱模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72027963/

相关文章:

database - 并发 DELETE RETURNING 查询的 Postgres 行为

sql-server - SQLServer 和 Hibernate 基于架构的 Multi-Tenancy

c# - 完成事务后更改 TransactionScope IsolationLevel

c# - 事务 - 避免插入时发生冲突

c# - 具有嵌套 sql 事务的 TransactionScope

mysql - 使用 JDBC 在 MyBatis 中回滚(无 Spring,无容器)

.net - TransactionScope一直在努力提升到MSDTC

java - spring data elasticsearch动态 Multi-Tenancy 索引不匹配?

java - 使用外部 .sql 文件使用 hibernate session 创建数据库时出错

c# - 无法将 TransactionScope 与任务一起使用