【问题标题】:Use custom interceptor with JTA @Transactional (quarkus-narayana-jta)使用带有 JTA @Transactional 的自定义拦截器 (quarkus-narayana-jta)
【发布时间】:2020-01-03 08:00:13
【问题描述】:

我想找到一种方法来应用带有 JTA @Transactional 注释的自定义拦截器。

我有一个带有@Transactional 的方法,这是一种业务交易。在那种方法中,我想:

  1. 做一些数据库操作
  2. 使用云消息服务发布一些主题。

如果两者中的任何一个失败,则两者都不应该完成(即它们应该被回滚)。

目前我使用Google Cloud pubsub 作为消息服务,但这个库似乎与 JMS 或 JTA 不兼容。因此,我想知道是否可以为该库实现自定义拦截器(例如,在事务期间排队消息,并在事务成功提交时发布排队消息)。

有什么好主意吗?

框架是 Quarkus,JTA 实现目前是 Narayana。

【问题讨论】:

    标签: java jms jta


    【解决方案1】:

    没有。 JTA @Transactional 要求您的消息传递平台具有理想地支持 XA API 或至少某种形式的事务语义的事务管理器:begin()、commit() 和 rollback() - begin() 可能不是必需的,但肯定是回滚() 是。

    如果您的事务中的第二条消息出现问题,您需要确保第一条消息“消失”,就好像它从未发生过一样,并回滚整个事务。

    但是,到目前为止,Google pub/sub 没有事务、事务 ID 或 commit() 和 rollback() 的概念。

    【讨论】:

    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    相关资源
    最近更新 更多