This is an automated email from the ASF dual-hosted git repository.

visortelle pushed a commit to branch revert-gh712
in repository https://gitbox.apache.org/repos/asf/pulsar-site.git


The following commit(s) were added to refs/heads/revert-gh712 by this push:
     new a1791e95102f Revert "Revert "[improve][doc]Add introduction of 
transaction isolation level in the txn-advanced-features.md (#712)""
a1791e95102f is described below

commit a1791e95102fda3470b8a9bcc01a4a2e6ac1ca4d
Author: visortelle <[email protected]>
AuthorDate: Mon May 27 12:44:20 2024 +0400

    Revert "Revert "[improve][doc]Add introduction of transaction isolation 
level in the txn-advanced-features.md (#712)""
    
    This reverts commit 6ff9b3e10a3a65602ab60070ca4e3c40980a62bb.
---
 docs/txn-advanced-features.md | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/docs/txn-advanced-features.md b/docs/txn-advanced-features.md
index 8819fcf8fba3..f00aa6f858c7 100644
--- a/docs/txn-advanced-features.md
+++ b/docs/txn-advanced-features.md
@@ -37,10 +37,33 @@ If you want to enable authentication with transactions, 
follow the steps below.
 
 2. [Configure authentication](security-overview/#authentication) in a Pulsar 
client.
 
+## Select transaction isolation level
+
+To enhance the flexibility of Pulsar transactions, they support two distinct 
isolation levels:
+- `READ_COMMITTED`(default): The consumer can only consume all transactional 
messages that have been committed.
+- `READ_UNCOMMITTED`: The consumer can consume all messages, even 
transactional messages that have been aborted.
+
+For different scenarios, they use different subscriptions and choose different 
isolation levels. One scenario might require transactions, while another might 
not. In general, not all subscriptions of the same topic require transaction 
guarantees. Some want low latency without the exact-once semantic guarantee 
(like a real-time monitoring system), and some must require the exactly-once 
guarantee (e.g., business processing systems).
+Users can freely choose different isolation levels according to different 
scenarios.
+
+Note that this is a subscription-level configuration, and all consumers under 
the same subscription must be configured with the same isolation level.
+
+In this example, the consumer builder uses the `READ_UNCOMMITTED` isolation 
level.
+
+```java
+Consumer<String> consumer = client
+  .newConsumer(Schema.STRING)
+  .topic("persistent://my-tenant/my-namespace/my-topic")
+  .subscriptionName("my-subscription")
+  .subscriptionType(SubscriptionType.Shared)
+  .subscriptionIsolationLevel(SubscriptionIsolationLevel.READ_UNCOMMITTED) // 
Adding the isolation level configuration
+  .subscribe();
+```
+
 ## Guarantee exactly-once semantics
 
 If you want to guarantee exactly-once semantics with transactions, you can 
[enable message deduplication at the broker, namespace, or topic 
level](cookbooks-deduplication.md#enable-message-deduplication-at-namespace-or-topic-level).
 
 ## Related topics
 
-- To get up quickly, see [Pulsar transactions - Get started](txn-use.md).
\ No newline at end of file
+- To get up quickly, see [Pulsar transactions - Get started](txn-use.md).

Reply via email to