java.lang.Object
dk.cloudcreate.essentials.components.queue.postgresql.PostgresqlDurableQueuesBuilder

public class PostgresqlDurableQueuesBuilder extends Object
  • Constructor Details

    • PostgresqlDurableQueuesBuilder

      public PostgresqlDurableQueuesBuilder()
  • Method Details

    • setUnitOfWorkFactory

      public PostgresqlDurableQueuesBuilder setUnitOfWorkFactory(dk.cloudcreate.essentials.components.foundation.transaction.jdbi.HandleAwareUnitOfWorkFactory<? extends dk.cloudcreate.essentials.components.foundation.transaction.jdbi.HandleAwareUnitOfWork> unitOfWorkFactory)
      Parameters:
      unitOfWorkFactory - the UnitOfWorkFactory needed to access the database
      Returns:
      this builder instance
    • setJsonSerializer

      public PostgresqlDurableQueuesBuilder setJsonSerializer(dk.cloudcreate.essentials.components.foundation.json.JSONSerializer jsonSerializer)
      Parameters:
      jsonSerializer - Set the JSONSerializer that is used to serialize/deserialize message payloads.
      If not set, then JacksonJSONSerializer with the PostgresqlDurableQueues.createDefaultObjectMapper() will be used
      Returns:
      this builder instance
    • setSharedQueueTableName

      public PostgresqlDurableQueuesBuilder setSharedQueueTableName(String sharedQueueTableName)
      Parameters:
      sharedQueueTableName - the name of the table that will contain all messages (across all QueueName's)
      Default is PostgresqlDurableQueues.DEFAULT_DURABLE_QUEUES_TABLE_NAME
      Returns:
      this builder instance
    • setMultiTableChangeListener

      public PostgresqlDurableQueuesBuilder setMultiTableChangeListener(dk.cloudcreate.essentials.components.foundation.postgresql.MultiTableChangeListener<dk.cloudcreate.essentials.components.foundation.postgresql.TableChangeNotification> multiTableChangeListener)
      Parameters:
      multiTableChangeListener - optional MultiTableChangeListener that allows PostgresqlDurableQueues to use QueuePollingOptimizer
      Returns:
      this builder instance
    • setQueuePollingOptimizerFactory

      public PostgresqlDurableQueuesBuilder setQueuePollingOptimizerFactory(Function<dk.cloudcreate.essentials.components.foundation.messaging.queue.operations.ConsumeFromQueue,dk.cloudcreate.essentials.components.foundation.messaging.queue.QueuePollingOptimizer> queuePollingOptimizerFactory)
      Parameters:
      queuePollingOptimizerFactory - optional QueuePollingOptimizer factory that creates a QueuePollingOptimizer per ConsumeFromQueue command - if set to null PostgresqlDurableQueues.createQueuePollingOptimizerFor(ConsumeFromQueue) is used instead
      Returns:
      this builder instance
    • setMessageHandlingTimeout

      public PostgresqlDurableQueuesBuilder setMessageHandlingTimeout(Duration messageHandlingTimeout)
      Parameters:
      messageHandlingTimeout - Only required if transactionalMode is TransactionalMode.SingleOperationTransaction.
      The parameter defines the timeout for messages being delivered, but haven't yet been acknowledged. After this timeout the message delivery will be reset and the message will again be a candidate for delivery
      Default is 30 seconds
      Returns:
      this builder instance
    • setTransactionalMode

      public PostgresqlDurableQueuesBuilder setTransactionalMode(dk.cloudcreate.essentials.components.foundation.messaging.queue.TransactionalMode transactionalMode)
      Parameters:
      transactionalMode - The TransactionalMode for this DurableQueues instance. If set to TransactionalMode.SingleOperationTransaction then the consumer MUST call the DurableQueues.acknowledgeMessageAsHandled(AcknowledgeMessageAsHandled) explicitly in a new UnitOfWork
      Note: The default consumer calls DurableQueues.acknowledgeMessageAsHandled(AcknowledgeMessageAsHandled) after successful message handling Default value TransactionalMode.SingleOperationTransaction
      Returns:
      this builder instance
    • build

      public PostgresqlDurableQueues build()