spring @Transactional 注解和redis/kafka的消息发布

我看一个web项目里

用@Transactional(readOnly = true)注解了一个类
类的方法是进行redis/kafka的消息发布

这个类里面就一个方法,方法的主要代码段如下:

for (String jsonStr : strArray) {
            redisTemplate.convertAndSend("topic_id", jsonStr );
            KafkaProducerUtil.sendMessage("topic_id", jsonStr );
        }

我的疑惑是
1 这个readOnly = true 对redis/kafka消息的发布有何作用?
2 这个方法里面没有抛异常的,只是sendMessage()的定义(定义在另一个类中)里有抛异常,但是异常在那里捕捉了,这样这个方法就没有抛异常的可能,那么加@Transactional 注解有何用?

阅读 3.6k
1 个回答

@Transactional(readOnly = true)是指这个方法使用只读事务,这个事务针对的应该是数据库层面,不知道方法里有没有用到数据库相关操作,没有的话我猜测是因为方法名与事务统一配置的方法名可能会有重合(就是会使用到事务),所以这样设置为只读事务,提高效率

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题