Class PubSubTemplate

java.lang.Object
com.google.cloud.spring.pubsub.core.PubSubTemplate
All Implemented Interfaces:
PubSubPublisherOperations, PubSubOperations, PubSubSubscriberOperations

public class PubSubTemplate extends Object implements PubSubOperations
Default implementation of PubSubOperations.

The main Google Cloud Pub/Sub integration component for publishing to topics and consuming messages from subscriptions asynchronously or by pulling.

  • Constructor Details

  • Method Details

    • getPubSubPublisherTemplate

      public PubSubPublisherTemplate getPubSubPublisherTemplate()
    • getPubSubSubscriberTemplate

      public PubSubSubscriberTemplate getPubSubSubscriberTemplate()
    • getMessageConverter

      public PubSubMessageConverter getMessageConverter()
    • setMessageConverter

      public void setMessageConverter(PubSubMessageConverter messageConverter)
    • publish

      public <T> CompletableFuture<String> publish(String topic, T payload, Map<String,String> headers)
      Uses the configured message converter to first convert the payload and headers to a PubsubMessage and then publish it.
      Specified by:
      publish in interface PubSubPublisherOperations
      Type Parameters:
      T - the type of the payload to publish
      Parameters:
      topic - short topic name, e.g., "topicName", or the fully-qualified topic name in the projects/[project_name]/topics/[topic_name] format
      payload - an object that will be serialized and sent
      headers - the headers to publish
      Returns:
      the listenable future of the call
    • publish

      public <T> CompletableFuture<String> publish(String topic, T payload)
      Description copied from interface: PubSubPublisherOperations
      Send a message to Pub/Sub.
      Specified by:
      publish in interface PubSubPublisherOperations
      Type Parameters:
      T - the type of the payload to publish
      Parameters:
      topic - short topic name, e.g., "topicName", or the fully-qualified topic name in the projects/[project_name]/topics/[topic_name] format
      payload - an object that will be serialized and sent
      Returns:
      the listenable future of the call
    • publish

      public CompletableFuture<String> publish(String topic, com.google.pubsub.v1.PubsubMessage pubsubMessage)
      Description copied from interface: PubSubPublisherOperations
      Send a message to Pub/Sub.
      Specified by:
      publish in interface PubSubPublisherOperations
      Parameters:
      topic - short topic name, e.g., "topicName", or the fully-qualified topic name in the projects/[project_name]/topics/[topic_name] format
      pubsubMessage - a Google Cloud Pub/Sub API message
      Returns:
      the listenable future of the call
    • subscribe

      public com.google.cloud.pubsub.v1.Subscriber subscribe(String subscription, Consumer<BasicAcknowledgeablePubsubMessage> messageConsumer)
      Description copied from interface: PubSubSubscriberOperations
      Add a callback method to an existing subscription.

      The created Subscriber is returned so it can be stopped.

      Specified by:
      subscribe in interface PubSubSubscriberOperations
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      messageConsumer - the callback method triggered when new messages arrive
      Returns:
      subscriber listening to new messages
    • subscribeAndConvert

      public <T> com.google.cloud.pubsub.v1.Subscriber subscribeAndConvert(String subscription, Consumer<ConvertedBasicAcknowledgeablePubsubMessage<T>> messageConsumer, Class<T> payloadType)
      Description copied from interface: PubSubSubscriberOperations
      Add a callback method to an existing subscription that receives Pub/Sub messages converted to the requested payload type.

      The created Subscriber is returned so it can be stopped.

      Specified by:
      subscribeAndConvert in interface PubSubSubscriberOperations
      Type Parameters:
      T - the type of the payload
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      messageConsumer - the callback method triggered when new messages arrive
      payloadType - the type to which the payload of the Pub/Sub message should be converted
      Returns:
      subscriber listening to new messages
    • pull

      public List<AcknowledgeablePubsubMessage> pull(String subscription, Integer maxMessages, Boolean returnImmediately)
      Description copied from interface: PubSubSubscriberOperations
      Pull a number of messages from a Google Cloud Pub/Sub subscription.
      Specified by:
      pull in interface PubSubSubscriberOperations
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      maxMessages - the maximum number of pulled messages. If this value is null then up to Integer.MAX_VALUE messages will be requested.
      returnImmediately - returns immediately even if subscription doesn't contain enough messages to satisfy maxMessages. Setting this parameter to true is not recommended as it may result in long delays in message delivery.
      Returns:
      the list of received acknowledgeable messages
    • pullAsync

      public CompletableFuture<List<AcknowledgeablePubsubMessage>> pullAsync(String subscription, Integer maxMessages, Boolean returnImmediately)
      Description copied from interface: PubSubSubscriberOperations
      Asynchronously pull a number of messages from a Google Cloud Pub/Sub subscription.
      Specified by:
      pullAsync in interface PubSubSubscriberOperations
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      maxMessages - the maximum number of pulled messages. If this value is null then up to Integer.MAX_VALUE messages will be requested.
      returnImmediately - returns immediately even if subscription doesn't contain enough messages to satisfy maxMessages. Setting this parameter to true is not recommended as it may result in long delays in message delivery.
      Returns:
      the CompletableFuture for the asynchronous execution, returning the list of received acknowledgeable messages
    • pullAndConvert

      public <T> List<ConvertedAcknowledgeablePubsubMessage<T>> pullAndConvert(String subscription, Integer maxMessages, Boolean returnImmediately, Class<T> payloadType)
      Description copied from interface: PubSubSubscriberOperations
      Pull a number of messages from a Google Cloud Pub/Sub subscription and convert them to Spring messages with the desired payload type.
      Specified by:
      pullAndConvert in interface PubSubSubscriberOperations
      Type Parameters:
      T - the type of the payload
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      maxMessages - the maximum number of pulled messages. If this value is null then up to Integer.MAX_VALUE messages will be requested.
      returnImmediately - returns immediately even if subscription doesn't contain enough messages to satisfy maxMessages. Setting this parameter to true is not recommended as it may result in long delays in message delivery.
      payloadType - the type to which the payload of the Pub/Sub messages should be converted
      Returns:
      the list of received acknowledgeable messages
    • pullAndConvertAsync

      public <T> CompletableFuture<List<ConvertedAcknowledgeablePubsubMessage<T>>> pullAndConvertAsync(String subscription, Integer maxMessages, Boolean returnImmediately, Class<T> payloadType)
      Description copied from interface: PubSubSubscriberOperations
      Asynchronously pull a number of messages from a Google Cloud Pub/Sub subscription and convert them to Spring messages with the desired payload type.
      Specified by:
      pullAndConvertAsync in interface PubSubSubscriberOperations
      Type Parameters:
      T - the type of the payload
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      maxMessages - the maximum number of pulled messages. If this value is null then up to Integer.MAX_VALUE messages will be requested.
      returnImmediately - returns immediately even if subscription doesn't contain enough messages to satisfy maxMessages. Setting this parameter to true is not recommended as it may result in long delays in message delivery.
      payloadType - the type to which the payload of the Pub/Sub messages should be converted
      Returns:
      the CompletableFuture for the asynchronous execution, returning the list of received acknowledgeable messages
    • pullAndAck

      public List<com.google.pubsub.v1.PubsubMessage> pullAndAck(String subscription, Integer maxMessages, Boolean returnImmediately)
      Description copied from interface: PubSubSubscriberOperations
      Pull and auto-acknowledge a number of messages from a Google Cloud Pub/Sub subscription.
      Specified by:
      pullAndAck in interface PubSubSubscriberOperations
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      maxMessages - the maximum number of pulled messages. If this value is null then up to Integer.MAX_VALUE messages will be requested.
      returnImmediately - returns immediately even if subscription doesn't contain enough messages to satisfy maxMessages. Setting this parameter to true is not recommended as it may result in long delays in message delivery.
      Returns:
      the list of received messages
    • pullAndAckAsync

      public CompletableFuture<List<com.google.pubsub.v1.PubsubMessage>> pullAndAckAsync(String subscription, Integer maxMessages, Boolean returnImmediately)
      Description copied from interface: PubSubSubscriberOperations
      Asynchronously pull and auto-acknowledge a number of messages from a Google Cloud Pub/Sub subscription.
      Specified by:
      pullAndAckAsync in interface PubSubSubscriberOperations
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      maxMessages - the maximum number of pulled messages. If this value is null then up to Integer.MAX_VALUE messages will be requested.
      returnImmediately - returns immediately even if subscription doesn't contain enough messages to satisfy maxMessages. Setting this parameter to true is not recommended as it may result in long delays in message delivery.
      Returns:
      the CompletableFuture for the asynchronous execution, returning the list of received acknowledgeable messages
    • pullNext

      public com.google.pubsub.v1.PubsubMessage pullNext(String subscription)
      Description copied from interface: PubSubSubscriberOperations
      Pull and auto-acknowledge a message from a Google Cloud Pub/Sub subscription.
      Specified by:
      pullNext in interface PubSubSubscriberOperations
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      Returns:
      a received message, or null if none exists in the subscription
    • pullNextAsync

      public CompletableFuture<com.google.pubsub.v1.PubsubMessage> pullNextAsync(String subscription)
      Description copied from interface: PubSubSubscriberOperations
      Asynchronously pull and auto-acknowledge a message from a Google Cloud Pub/Sub subscription.
      Specified by:
      pullNextAsync in interface PubSubSubscriberOperations
      Parameters:
      subscription - short subscription name, e.g., "subscriptionName", or the fully-qualified subscription name in the projects/[project_name]/subscriptions/[subscription_name] format
      Returns:
      the CompletableFuture for the asynchronous execution, returning a received message, or null if none exists in the subscription
    • ack

      public CompletableFuture<Void> ack(Collection<? extends AcknowledgeablePubsubMessage> acknowledgeablePubsubMessages)
      Description copied from interface: PubSubSubscriberOperations
      Acknowledge a batch of messages. The messages must have the same project id.
      Specified by:
      ack in interface PubSubSubscriberOperations
      Parameters:
      acknowledgeablePubsubMessages - messages to be acknowledged
      Returns:
      CompletableFuture<Void> the CompletableFuture for the asynchronous execution
    • nack

      public CompletableFuture<Void> nack(Collection<? extends AcknowledgeablePubsubMessage> acknowledgeablePubsubMessages)
      Description copied from interface: PubSubSubscriberOperations
      Negatively acknowledge a batch of messages. The messages must have the same project id.
      Specified by:
      nack in interface PubSubSubscriberOperations
      Parameters:
      acknowledgeablePubsubMessages - messages to be negatively acknowledged
      Returns:
      CompletableFuture<Void> the CompletableFuture for the asynchronous execution
    • modifyAckDeadline

      public CompletableFuture<Void> modifyAckDeadline(Collection<? extends AcknowledgeablePubsubMessage> acknowledgeablePubsubMessages, int ackDeadlineSeconds)
      Description copied from interface: PubSubSubscriberOperations
      Modify the ack deadline of a batch of messages. The messages must have the same project id.
      Specified by:
      modifyAckDeadline in interface PubSubSubscriberOperations
      Parameters:
      acknowledgeablePubsubMessages - messages to be modified
      ackDeadlineSeconds - the new ack deadline in seconds. A deadline of 0 effectively nacks the messages.
      Returns:
      CompletableFuture<Void> the CompletableFuture for the asynchronous execution
    • getPublisherFactory

      public PublisherFactory getPublisherFactory()
    • getSubscriberFactory

      public SubscriberFactory getSubscriberFactory()