blob: 5c08a7f6e5cdb9a2036384c8a449ec4638182903 [file] [log] [blame]
:py:mod:`airflow.providers.google.cloud.hooks.pubsub`
=====================================================
.. py:module:: airflow.providers.google.cloud.hooks.pubsub
.. autoapi-nested-parse::
This module contains a Google Pub/Sub Hook.
.. spelling::
MessageStoragePolicy
ReceivedMessage
Module Contents
---------------
Classes
~~~~~~~
.. autoapisummary::
airflow.providers.google.cloud.hooks.pubsub.PubSubHook
.. py:exception:: PubSubException
Bases: :py:obj:`Exception`
Alias for Exception.
.. py:class:: PubSubHook(gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None)
Bases: :py:obj:`airflow.providers.google.common.hooks.base_google.GoogleBaseHook`
Hook for accessing Google Pub/Sub.
The Google Cloud project against which actions are applied is determined by
the project embedded in the Connection referenced by gcp_conn_id.
.. py:method:: get_conn()
Retrieves connection to Google Cloud Pub/Sub.
:return: Google Cloud Pub/Sub client object.
:rtype: google.cloud.pubsub_v1.PublisherClient
.. py:method:: subscriber_client()
Creates SubscriberClient.
:return: Google Cloud Pub/Sub client object.
:rtype: google.cloud.pubsub_v1.SubscriberClient
.. py:method:: publish(topic, messages, project_id = PROVIDE_PROJECT_ID)
Publishes messages to a Pub/Sub topic.
:param topic: the Pub/Sub topic to which to publish; do not
include the ``projects/{project}/topics/`` prefix.
:param messages: messages to publish; if the data field in a
message is set, it should be a bytestring (utf-8 encoded)
https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage
:param project_id: Optional, the Google Cloud project ID in which to publish.
If set to None or missing, the default project_id from the Google Cloud connection is used.
.. py:method:: create_topic(topic, project_id = PROVIDE_PROJECT_ID, fail_if_exists = False, labels = None, message_storage_policy = None, kms_key_name = None, retry = DEFAULT, timeout = None, metadata = ())
Creates a Pub/Sub topic, if it does not already exist.
:param topic: the Pub/Sub topic name to create; do not
include the ``projects/{project}/topics/`` prefix.
:param project_id: Optional, the Google Cloud project ID in which to create the topic
If set to None or missing, the default project_id from the Google Cloud connection is used.
:param fail_if_exists: if set, raise an exception if the topic
already exists
:param labels: Client-assigned labels; see
https://cloud.google.com/pubsub/docs/labels
:param message_storage_policy: Policy constraining the set
of Google Cloud regions where messages published to
the topic may be stored. If not present, then no constraints
are in effect.
Union[Dict, google.cloud.pubsub_v1.types.MessageStoragePolicy]
:param kms_key_name: The resource name of the Cloud KMS CryptoKey
to be used to protect access to messages published on this topic.
The expected format is
``projects/*/locations/*/keyRings/*/cryptoKeys/*``.
:param retry: (Optional) A retry object used to retry requests.
If None is specified, requests will not be retried.
:param timeout: (Optional) The amount of time, in seconds, to wait for the request
to complete. Note that if retry is specified, the timeout applies to each
individual attempt.
:param metadata: (Optional) Additional metadata that is provided to the method.
.. py:method:: delete_topic(topic, project_id = PROVIDE_PROJECT_ID, fail_if_not_exists = False, retry = DEFAULT, timeout = None, metadata = ())
Deletes a Pub/Sub topic if it exists.
:param topic: the Pub/Sub topic name to delete; do not
include the ``projects/{project}/topics/`` prefix.
:param project_id: Optional, the Google Cloud project ID in which to delete the topic.
If set to None or missing, the default project_id from the Google Cloud connection is used.
:param fail_if_not_exists: if set, raise an exception if the topic
does not exist
:param retry: (Optional) A retry object used to retry requests.
If None is specified, requests will not be retried.
:param timeout: (Optional) The amount of time, in seconds, to wait for the request
to complete. Note that if retry is specified, the timeout applies to each
individual attempt.
:param metadata: (Optional) Additional metadata that is provided to the method.
.. py:method:: create_subscription(topic, project_id = PROVIDE_PROJECT_ID, subscription = None, subscription_project_id = None, ack_deadline_secs = 10, fail_if_exists = False, push_config = None, retain_acked_messages = None, message_retention_duration = None, labels = None, enable_message_ordering = False, expiration_policy = None, filter_ = None, dead_letter_policy = None, retry_policy = None, retry = DEFAULT, timeout = None, metadata = ())
Creates a Pub/Sub subscription, if it does not already exist.
:param topic: the Pub/Sub topic name that the subscription will be bound
to create; do not include the ``projects/{project}/subscriptions/`` prefix.
:param project_id: Optional, the Google Cloud project ID of the topic that the subscription will be
bound to. If set to None or missing, the default project_id from the Google Cloud connection
is used.
:param subscription: the Pub/Sub subscription name. If empty, a random
name will be generated using the uuid module
:param subscription_project_id: the Google Cloud project ID where the subscription
will be created. If unspecified, ``project_id`` will be used.
:param ack_deadline_secs: Number of seconds that a subscriber has to
acknowledge each message pulled from the subscription
:param fail_if_exists: if set, raise an exception if the topic
already exists
:param push_config: If push delivery is used with this subscription,
this field is used to configure it. An empty ``pushConfig`` signifies
that the subscriber will pull and ack messages using API methods.
:param retain_acked_messages: Indicates whether to retain acknowledged
messages. If true, then messages are not expunged from the subscription's
backlog, even if they are acknowledged, until they fall out of the
``message_retention_duration`` window. This must be true if you would
like to Seek to a timestamp.
:param message_retention_duration: How long to retain unacknowledged messages
in the subscription's backlog, from the moment a message is published. If
``retain_acked_messages`` is true, then this also configures the
retention of acknowledged messages, and thus configures how far back in
time a ``Seek`` can be done. Defaults to 7 days. Cannot be more than 7
days or less than 10 minutes.
:param labels: Client-assigned labels; see
https://cloud.google.com/pubsub/docs/labels
:param enable_message_ordering: If true, messages published with the same
ordering_key in PubsubMessage will be delivered to the subscribers in the order
in which they are received by the Pub/Sub system. Otherwise, they may be
delivered in any order.
:param expiration_policy: A policy that specifies the conditions for this
subscription's expiration. A subscription is considered active as long as any
connected subscriber is successfully consuming messages from the subscription or
is issuing operations on the subscription. If expiration_policy is not set,
a default policy with ttl of 31 days will be used. The minimum allowed value for
expiration_policy.ttl is 1 day.
:param filter_: An expression written in the Cloud Pub/Sub filter language. If
non-empty, then only PubsubMessages whose attributes field matches the filter are
delivered on this subscription. If empty, then no messages are filtered out.
:param dead_letter_policy: A policy that specifies the conditions for dead lettering
messages in this subscription. If dead_letter_policy is not set, dead lettering is
disabled.
:param retry_policy: A policy that specifies how Pub/Sub retries message delivery
for this subscription. If not set, the default retry policy is applied. This
generally implies that messages will be retried as soon as possible for healthy
subscribers. RetryPolicy will be triggered on NACKs or acknowledgement deadline
exceeded events for a given message.
:param retry: (Optional) A retry object used to retry requests.
If None is specified, requests will not be retried.
:param timeout: (Optional) The amount of time, in seconds, to wait for the request
to complete. Note that if retry is specified, the timeout applies to each
individual attempt.
:param metadata: (Optional) Additional metadata that is provided to the method.
:return: subscription name which will be the system-generated value if
the ``subscription`` parameter is not supplied
:rtype: str
.. py:method:: delete_subscription(subscription, project_id = PROVIDE_PROJECT_ID, fail_if_not_exists = False, retry = DEFAULT, timeout = None, metadata = ())
Deletes a Pub/Sub subscription, if it exists.
:param subscription: the Pub/Sub subscription name to delete; do not
include the ``projects/{project}/subscriptions/`` prefix.
:param project_id: Optional, the Google Cloud project ID where the subscription exists
If set to None or missing, the default project_id from the Google Cloud connection is used.
:param fail_if_not_exists: if set, raise an exception if the topic does not exist
:param retry: (Optional) A retry object used to retry requests.
If None is specified, requests will not be retried.
:param timeout: (Optional) The amount of time, in seconds, to wait for the request
to complete. Note that if retry is specified, the timeout applies to each
individual attempt.
:param metadata: (Optional) Additional metadata that is provided to the method.
.. py:method:: pull(subscription, max_messages, project_id = PROVIDE_PROJECT_ID, return_immediately = False, retry = DEFAULT, timeout = None, metadata = ())
Pulls up to ``max_messages`` messages from Pub/Sub subscription.
:param subscription: the Pub/Sub subscription name to pull from; do not
include the 'projects/{project}/topics/' prefix.
:param max_messages: The maximum number of messages to return from
the Pub/Sub API.
:param project_id: Optional, the Google Cloud project ID where the subscription exists.
If set to None or missing, the default project_id from the Google Cloud connection is used.
:param return_immediately: If set, the Pub/Sub API will immediately
return if no messages are available. Otherwise, the request will
block for an undisclosed, but bounded period of time
:param retry: (Optional) A retry object used to retry requests.
If None is specified, requests will not be retried.
:param timeout: (Optional) The amount of time, in seconds, to wait for the request
to complete. Note that if retry is specified, the timeout applies to each
individual attempt.
:param metadata: (Optional) Additional metadata that is provided to the method.
:return: A list of Pub/Sub ReceivedMessage objects each containing
an ``ackId`` property and a ``message`` property, which includes
the base64-encoded message content. See
https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#google.pubsub.v1.ReceivedMessage
.. py:method:: acknowledge(subscription, project_id, ack_ids = None, messages = None, retry = DEFAULT, timeout = None, metadata = ())
Acknowledges the messages associated with the ``ack_ids`` from Pub/Sub subscription.
:param subscription: the Pub/Sub subscription name to delete; do not
include the 'projects/{project}/topics/' prefix.
:param ack_ids: List of ReceivedMessage ackIds from a previous pull response.
Mutually exclusive with ``messages`` argument.
:param messages: List of ReceivedMessage objects to acknowledge.
Mutually exclusive with ``ack_ids`` argument.
:param project_id: Optional, the Google Cloud project name or ID in which to create the topic
If set to None or missing, the default project_id from the Google Cloud connection is used.
:param retry: (Optional) A retry object used to retry requests.
If None is specified, requests will not be retried.
:param timeout: (Optional) The amount of time, in seconds, to wait for the request
to complete. Note that if retry is specified, the timeout applies to each
individual attempt.
:param metadata: (Optional) Additional metadata that is provided to the method.