当前位置: 首页 > 知识库问答 >
问题:

使用自定义拦截器与JTA@Transactional(quulkus-narayana-jta)

葛和志
2023-03-14

我想找到一种使用JTA事务注释应用自定义拦截器的方法。

我有一个处理业务事务的方法。在这种方法中,我想:

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

如果其中任何一项失败,则不应执行这两项操作(即,应回滚)。

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

有什么好主意吗?

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

共有1个答案

盖雪峰
2023-03-14

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

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

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

 类似资料:
  • null 我尝试将@priority(interceptor.priority.platform_beform)和@prematching也放入我的过滤器中,但即使是在OIDC启动后也会调用。 另外,是否有任何方法支持扩展quarkus oidc逻辑以包括自定义代码? 我无法获得oidc和keycloak-auth拦截器的优先级(知道这些可以帮助我决定过滤器的优先级)。请帮忙。

  • 我有一个Flume组件在监听Syslog流。我做了一个自定义的拦截器来修改调用,但它不起作用。我做错了什么?谢谢你,Andrea 拦截器是一个编译良好的JAR文件,位于@FLUME_HOME/bin目录中 系统将事件记录在文件中而不修改它们,这是相关的DEBUG日志:

  • 问题内容: 我正在使用Java EE 6和Jboss AS7.1,并尝试使用拦截器绑定(来自jboss网站的示例)。 我有一个InterceptorBinding注解: 拦截器: 还有一个豆: 但是拦截器没有被称为。。。 在编写此代码时将调用拦截器: 谢谢你的帮助。 问题答案: 您是否按照参考示例中的说明启用了拦截器? 缺省情况下,bean档案没有通过拦截器绑定绑定的已启用拦截器。必须通过将侦听器

  • 这里是我的拦截器方法,我想在这里设置自定义响应,告诉UI发生了什么 并且在web.xml中 spring-servlet.xml 当会话超时时,它在返回false后不发送任何响应。连下面的都不行

  • 我正在编写一个库/sdk,它可以拦截任何使用自定义注释进行注释的方法。代码的工作方式有点像这样 截取这个的方面有一个切入点表达式 当我在与相同的包中描述方面时,此代码工作正常。但是,如果我创建一个单独的库并定义方面,因为它无法拦截。有帮助吗? 回应@Bond的评论 Spring版本:Spring上下文-4.1.7。发布aspectj-1.6.5问题的关键是注释不会在同一个项目中使用。在编译之后,它

  • 本文向大家介绍SpringBoot添加自定义拦截器的实现代码,包括了SpringBoot添加自定义拦截器的实现代码的使用技巧和注意事项,需要的朋友参考一下 在Controller层时,往往会需要校验或验证某些操作,而在每个Controller写重复代码,工作量比较大,这里在Springboot项目中 ,通过继承WebMvcConfigurerAdapter,添加拦截器。 1、WebMvcConfi