Class PulsarTemplate<T>

java.lang.Object
org.springframework.pulsar.core.PulsarTemplate<T>
Type Parameters:
T - the message payload type
All Implemented Interfaces:
Aware, BeanNameAware, SmartInitializingSingleton, ApplicationContextAware, PulsarOperations<T>

public class PulsarTemplate<T> extends Object implements PulsarOperations<T>, ApplicationContextAware, BeanNameAware, SmartInitializingSingleton
A template for executing high-level Pulsar operations.
Author:
Soby Chacko, Chris Bono, Alexander Preuß, Christophe Bornet, Jonas Geiregat
  • Constructor Details

    • PulsarTemplate

      public PulsarTemplate(PulsarProducerFactory<T> producerFactory)
      Construct a template instance without interceptors that uses the default schema resolver.
      Parameters:
      producerFactory - the factory used to create the backing Pulsar producers.
    • PulsarTemplate

      public PulsarTemplate(PulsarProducerFactory<T> producerFactory, List<org.apache.pulsar.client.api.interceptor.ProducerInterceptor> interceptors)
      Construct a template instance with interceptors that uses the default schema resolver and default topic resolver and enables observation recording.
      Parameters:
      producerFactory - the factory used to create the backing Pulsar producers.
      interceptors - the interceptors to add to the producer.
    • PulsarTemplate

      public PulsarTemplate(PulsarProducerFactory<T> producerFactory, List<org.apache.pulsar.client.api.interceptor.ProducerInterceptor> interceptors, SchemaResolver schemaResolver, TopicResolver topicResolver, boolean observationEnabled)
      Construct a template instance with optional observation configuration.
      Parameters:
      producerFactory - the factory used to create the backing Pulsar producers
      interceptors - the list of interceptors to add to the producer
      schemaResolver - the schema resolver to use
      topicResolver - the topic resolver to use
      observationEnabled - whether to record observations
  • Method Details

    • setApplicationContext

      public void setApplicationContext(ApplicationContext applicationContext)
      Specified by:
      setApplicationContext in interface ApplicationContextAware
    • transactions

      public TransactionProperties transactions()
      Gets the transaction properties.
      Returns:
      the transaction properties
      Since:
      1.1.0
    • afterSingletonsInstantiated

      public void afterSingletonsInstantiated()
      If observations are enabled, attempt to obtain the Observation registry and convention.
      Specified by:
      afterSingletonsInstantiated in interface SmartInitializingSingleton
    • send

      public org.apache.pulsar.client.api.MessageId send(@Nullable T message)
      Description copied from interface: PulsarOperations
      Sends a message to the default topic in a blocking manner.
      Specified by:
      send in interface PulsarOperations<T>
      Parameters:
      message - the message to send
      Returns:
      the id assigned by the broker to the published message
    • send

      public org.apache.pulsar.client.api.MessageId send(@Nullable T message, @Nullable org.apache.pulsar.client.api.Schema<T> schema)
      Description copied from interface: PulsarOperations
      Sends a message to the default topic in a blocking manner.
      Specified by:
      send in interface PulsarOperations<T>
      Parameters:
      message - the message to send
      schema - the schema to use or null to send using the default schema resolution
      Returns:
      the id assigned by the broker to the published message
    • send

      public org.apache.pulsar.client.api.MessageId send(@Nullable String topic, @Nullable T message)
      Description copied from interface: PulsarOperations
      Sends a message to the specified topic in a blocking manner.
      Specified by:
      send in interface PulsarOperations<T>
      Parameters:
      topic - the topic to send the message to or null to send to the default topic
      message - the message to send
      Returns:
      the id assigned by the broker to the published message
    • send

      public org.apache.pulsar.client.api.MessageId send(@Nullable String topic, @Nullable T message, @Nullable org.apache.pulsar.client.api.Schema<T> schema)
      Description copied from interface: PulsarOperations
      Sends a message to the specified topic in a blocking manner.
      Specified by:
      send in interface PulsarOperations<T>
      Parameters:
      topic - the topic to send the message to or null to send to the default topic
      message - the message to send
      schema - the schema to use or null to send using the default schema resolution
      Returns:
      the id assigned by the broker to the published message
    • sendAsync

      public CompletableFuture<org.apache.pulsar.client.api.MessageId> sendAsync(@Nullable T message)
      Description copied from interface: PulsarOperations
      Sends a message to the default topic in a non-blocking manner.
      Specified by:
      sendAsync in interface PulsarOperations<T>
      Parameters:
      message - the message to send
      Returns:
      a future that holds the id assigned by the broker to the published message
    • sendAsync

      public CompletableFuture<org.apache.pulsar.client.api.MessageId> sendAsync(@Nullable T message, @Nullable org.apache.pulsar.client.api.Schema<T> schema)
      Description copied from interface: PulsarOperations
      Sends a message to the default topic in a non-blocking manner.
      Specified by:
      sendAsync in interface PulsarOperations<T>
      Parameters:
      message - the message to send
      schema - the schema to use or null to send using the default schema resolution
      Returns:
      a future that holds the id assigned by the broker to the published message
    • sendAsync

      public CompletableFuture<org.apache.pulsar.client.api.MessageId> sendAsync(@Nullable String topic, @Nullable T message)
      Description copied from interface: PulsarOperations
      Sends a message to the specified topic in a non-blocking manner.
      Specified by:
      sendAsync in interface PulsarOperations<T>
      Parameters:
      topic - the topic to send the message to or null to send to the default topic
      message - the message to send
      Returns:
      a future that holds the id assigned by the broker to the published message
    • sendAsync

      public CompletableFuture<org.apache.pulsar.client.api.MessageId> sendAsync(@Nullable String topic, @Nullable T message, @Nullable org.apache.pulsar.client.api.Schema<T> schema)
      Description copied from interface: PulsarOperations
      Sends a message to the specified topic in a non-blocking manner.
      Specified by:
      sendAsync in interface PulsarOperations<T>
      Parameters:
      topic - the topic to send the message to or null to send to the default topic
      message - the message to send
      schema - the schema to use or null to send using the default schema resolution
      Returns:
      a future that holds the id assigned by the broker to the published message
    • newMessage

      public PulsarOperations.SendMessageBuilder<T> newMessage(@Nullable T message)
      Description copied from interface: PulsarOperations
      Create a builder for configuring and sending a message.
      Specified by:
      newMessage in interface PulsarOperations<T>
      Parameters:
      message - the payload of the message
      Returns:
      the builder to configure and send the message
    • setBeanName

      public void setBeanName(String beanName)
      Specified by:
      setBeanName in interface BeanNameAware
    • executeInTransaction

      @Nullable public <R> R executeInTransaction(PulsarTemplate.TemplateCallback<T,R> callback)
      Execute some arbitrary operation(s) on the template and return the result. The template is invoked within a local transaction and do not participate in a global transaction (if present).
      Type Parameters:
      R - the callback return type
      Parameters:
      callback - the callback
      Returns:
      the result
      Since:
      1.1.0