--- catalog_title: Pub/Sub Tools catalog_description: Publish, pull, and acknowledge messages from Google Cloud Pub/Sub catalog_icon: /integrations/assets/pubsub.png catalog_tags: ["google"] --- # Google Cloud Pub/Sub tool for ADK
Supported in ADKPython v1.22.0
The `PubSubToolset` allows agents to interact with [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) service to publish, pull, and acknowledge messages. ## Prerequisites Before using the `PubSubToolset`, you need to: 1. **Enable the Pub/Sub API** in your Google Cloud project. 2. **Authenticate and authorize**: Ensure that the principal (e.g., user, service account) running the agent has the necessary IAM permissions to perform Pub/Sub operations. For more information on Pub/Sub roles, see the [Pub/Sub access control documentation](https://cloud.google.com/pubsub/docs/access-control). 3. **Create a topic or subscription**: [Create a topic](https://cloud.google.com/pubsub/docs/create-topic) to publish messages and [create a subscription](https://cloud.google.com/pubsub/docs/create-subscription) to receive them. ## Usage ```py --8<-- "examples/python/snippets/tools/built-in-tools/pubsub.py" ``` ## Tools The `PubSubToolset` includes the following tools: ### `publish_message` Publishes a message to a Pub/Sub topic. | Parameter | Type | Description | | -------------- | ------------------- | ------------------------------------------------------------------------------------------------------- | | `topic_name` | `str` | The name of the Pub/Sub topic (e.g., `projects/my-project/topics/my-topic`). | | `message` | `str` | The message content to publish. | | `attributes` | `dict[str, str]` | (Optional) Attributes to attach to the message. | | `ordering_key` | `str` | (Optional) The ordering key for the message. If you set this parameter, messages are published in order. | ### `pull_messages` Pulls messages from a Pub/Sub subscription. | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------- | | `subscription_name` | `str` | The name of the Pub/Sub subscription (e.g., `projects/my-project/subscriptions/my-sub`). | | `max_messages` | `int` | (Optional) The maximum number of messages to pull. Defaults to `1`. | | `auto_ack` | `bool` | (Optional) Whether to automatically acknowledge the messages. Defaults to `False`. | ### `acknowledge_messages` Acknowledges one or more messages on a Pub/Sub subscription. | Parameter | Type | Description | | ------------------- | ------------- | ------------------------------------------------------------------------------------------------- | | `subscription_name` | `str` | The name of the Pub/Sub subscription (e.g., `projects/my-project/subscriptions/my-sub`). | | `ack_ids` | `list[str]` | A list of acknowledgment IDs to acknowledge. |