Class TransactionImpl

  • All Implemented Interfaces:
    io.netty.util.TimerTask, org.apache.pulsar.client.api.transaction.Transaction

    public class TransactionImpl
    extends java.lang.Object
    implements org.apache.pulsar.client.api.transaction.Transaction, io.netty.util.TimerTask
    The default implementation of Transaction.

    All the error handling and retry logic are handled by this class. The original pulsar client doesn't handle any transaction logic. It is only responsible for sending the messages and acknowledgements carrying the transaction id and retrying on failures. This decouples the transactional operations from non-transactional operations as much as possible.

    • Nested Class Summary

      • Nested classes/interfaces inherited from interface org.apache.pulsar.client.api.transaction.Transaction

        org.apache.pulsar.client.api.transaction.Transaction.State
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.concurrent.CompletableFuture<java.lang.Void> abort()  
      <T> boolean checkIfOpen​(java.util.concurrent.CompletableFuture<T> completableFuture)  
      java.util.concurrent.CompletableFuture<java.lang.Void> commit()  
      org.apache.pulsar.client.api.transaction.Transaction.State getState()  
      org.apache.pulsar.client.api.transaction.TxnID getTxnID()  
      java.util.concurrent.CompletableFuture<java.lang.Void> registerAckedTopic​(java.lang.String topic, java.lang.String subscription)  
      void registerAckOp​(java.util.concurrent.CompletableFuture<java.lang.Void> ackFuture)  
      void registerCumulativeAckConsumer​(ConsumerImpl<?> consumer)  
      java.util.concurrent.CompletableFuture<java.lang.Void> registerProducedTopic​(java.lang.String topic)  
      void registerSendOp​(java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId> sendFuture)  
      void run​(io.netty.util.Timeout timeout)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • run

        public void run​(io.netty.util.Timeout timeout)
                 throws java.lang.Exception
        Specified by:
        run in interface io.netty.util.TimerTask
        Throws:
        java.lang.Exception
      • registerProducedTopic

        public java.util.concurrent.CompletableFuture<java.lang.Void> registerProducedTopic​(java.lang.String topic)
      • registerSendOp

        public void registerSendOp​(java.util.concurrent.CompletableFuture<org.apache.pulsar.client.api.MessageId> sendFuture)
      • registerAckedTopic

        public java.util.concurrent.CompletableFuture<java.lang.Void> registerAckedTopic​(java.lang.String topic,
                                                                                         java.lang.String subscription)
      • registerAckOp

        public void registerAckOp​(java.util.concurrent.CompletableFuture<java.lang.Void> ackFuture)
      • registerCumulativeAckConsumer

        public void registerCumulativeAckConsumer​(ConsumerImpl<?> consumer)
      • commit

        public java.util.concurrent.CompletableFuture<java.lang.Void> commit()
        Specified by:
        commit in interface org.apache.pulsar.client.api.transaction.Transaction
      • abort

        public java.util.concurrent.CompletableFuture<java.lang.Void> abort()
        Specified by:
        abort in interface org.apache.pulsar.client.api.transaction.Transaction
      • getTxnID

        public org.apache.pulsar.client.api.transaction.TxnID getTxnID()
        Specified by:
        getTxnID in interface org.apache.pulsar.client.api.transaction.Transaction
      • getState

        public org.apache.pulsar.client.api.transaction.Transaction.State getState()
        Specified by:
        getState in interface org.apache.pulsar.client.api.transaction.Transaction
      • checkIfOpen

        public <T> boolean checkIfOpen​(java.util.concurrent.CompletableFuture<T> completableFuture)