首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SessionAwareMessageListener是否需要commit() / rollback()?

SessionAwareMessageListener是否需要commit() / rollback()?
EN

Stack Overflow用户
提问于 2014-10-06 18:52:31
回答 1查看 643关注 0票数 0

我们使用的是Spring的SessionAwareMessageListener。您似乎需要手动执行commit()rollback(),以确保邮件被使用或标记为要重新传递。但我想知道您是否也可以省略它,然后期望SessionAwareMessageListener在没有发生异常的情况下自动提交,或者在出现异常的情况下回滚。

EN

回答 1

Stack Overflow用户

发布于 2015-05-15 01:55:23

我知道这是一个老生常谈的问题,但我的答案是:

不,SessionAwareMessageListener本身并不“需要”commit()rollback()。您可以在没有这些调用的情况下在侦听器中编写代码,除非从onMessage()方法抛出异常,否则侦听器仍然会使用消息,并假定所有这些消息都没有问题。

为了让commit()rollback()调用完成它们的预期功能,您必须使用事务处理会话。这可以通过在DefaultMessageListenerContainer上将sessionTransacted标志设置为true,或者通过定义您自己的事务管理器并将其附加到容器来实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26214689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档