That is not possible. A producer can only have a single open
transaction. If your example, the call of thread-2 to start a new
transactions would fail and an exception would be thrown.

-Matthias

On 11/13/19 10:52 AM, Anindya Haldar wrote:
> The producer API doc 
> (https://kafka.apache.org/23/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html
>  
> <https://kafka.apache.org/23/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html>)
>  says that KafkaProducer is thread safe.
> 
> What I was trying to figure out is what the relationship is between a thread 
> context and a transaction initiated in that thread. When multiple threads are 
> using a single producer instance and initiating transactions are those 
> transaction boundaries scoped to the thread context, or do they step on each 
> others’ toes?
> 
> Suppose two threads are sharing the same producer instance the following way:
> 
>     thread-1 begins a transaction T1
>     thread-1 starts sending messages in T!
>     thread-2 begins a transaction T2
>     thread-2 sends some messages in T2
>     thread-2 gets and error and rolls back its transaction T2
> 
> At this point does the rollback of transaction T2 by the thread-2 affect the 
> transaction T1 remaining open and used by thread-1 in any fashion? It is not 
> clear to me from the API documentation. Will very much appreciate some 
> insights into the behavior here. Similar questions also arise for commits by 
> threads independently of each other.
> 
> Sincerely,
> Anindya Haldar
> Oracle Responsys
> 
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to