gpt4 book ai didi

JMS session , "transacted"和 "auto-acknowledge"

转载 作者:行者123 更新时间:2023-12-02 05:14:33 26 4
gpt4 key购买 nike

JMS session 到底意味着什么?

JMS session 可以或不可以“事务处理”是什么意思?

JMS session 可以或不可以“自动确认”是什么意思?

最佳答案

您可以将 JMS session 视为连接和该连接上的线程工作之间的链接。 JMS session 是“单线程上下文”,因此每个线程必须使用不同的 session 。相反,JMS 连接可以在多个线程之间共享。此外,一个线程可以拥有多个 session 。

session 上的发送/接收操作要么确认,要么事务处理

想象一下消费者崩溃:如果消费者表示尚未处理消息,通常您希望重新传递消息。因此,消费者可以向 Broker 发送确认 (ACK),以告知 JMS Broker 消息已被处理。不仅被接收,而且还存储在数据库中,或者消费者正在做的任何工作。如果消费者在崩溃后重新启动,它将收到所有尚未确认的消息。

ACK 有不同形式:自动确认意味着 API 会在您从回调返回后为您调用 recognize()。在其他情况下,您必须自己调用acknowledge()。

事务在该 session 上分组发送或接收操作(全有或全无)。因此,您会发送/发送/发送,然后提交,并知道所有 3 条消息在提交时都可供消费者使用,或者没有。事务性交付的优点:交付的最高保证,并且您可以对操作进行分组 - 缺点:延迟和可能的性能。

session 的一个主要目的是保持事务的状态。如果您的 session 是为了进行事务而创建的 (SESSION_TRANSACTED),那么它会知道您计划在事务中发送的所有消息以及该事务是否已提交或回滚。

关于JMS session , "transacted"和 "auto-acknowledge",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com