GCP Pub/Sub (Google Cloud Pub/Sub)
Django Action Triggers sending messages to a GCP Pub/Sub message broker. This section guides you through configuring GCP Pub/Sub and creating triggers that send messages to a GCP Pub/Sub broker.
Installation
To use GCP Pub/Sub as a message broker, you will need to install an additional package. This can be done by running the following command:
pip install django-action-triggers[gcp]
Configuration
Before messages can be sent to a GCP Pub/Sub message broker, the broker needs to be configured in the Django settings.
Note
See the message brokers configuration guide for information on configuring message brokers.
GCP Pub/Sub Configuration
The following configuration options must be set in the Django settings to configure the GCP Pub/Sub message broker:
conn_details.project: The GCP project name.
conn_details.topic: The topic where messages will be sent when a trigger is activated.
Example Configuration in settings.py
Here is an example configuration for GCP Pub/Sub:
ACTION_BROKERS = {
"my_gcp_pubsub_broker": {
"broker_type": "gcp_pubsub",
"conn_details": {
"project": "my-gcp-project",
"topic": "my_topic"
},
"params": {}
}
}
In this configuration: - The my_gcp_pubsub_broker is set to connect to the GCP project my-gcp-project and send messages to the my_topic topic.
Creating a GCP Pub/Sub Action
Once you have configured GCP Pub/Sub, you can create a trigger that sends messages to the GCP Pub/Sub broker whenever the trigger is activated.
Scenario
Suppose you have the following Django models:
from django.db import models
class Customer(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField()
class Product(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
class Sale(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.IntegerField()
Let’s say you want to send a message to GCP Pub/Sub when a new sale is created. You can achieve this by following these steps:
Step 1: Create a Config Model Instance (Base Action)
The Config model defines the base action, including the payload that will be sent when the trigger is activated.
from django.contrib.contenttypes.models import ContentType
from action_triggers.models import Config
config = Config.objects.create(
payload={
"customer_name": "{{ customer.name }}",
"product_name": "{{ product.name }}",
"quantity": "{{ quantity }}"
},
active=True,
content_types=[
ContentType.objects.get_for_model(Sale)
]
)
The payload is designed to behave like a Django template. If the resulting value is JSON-serializable, the payload will be returned as JSON; otherwise, it will be returned as plain text.
Step 2: Create a MessageBrokerQueue Model Instance (GCP Pub/Sub Action)
Now, create a MessageBrokerQueue model instance to define the GCP Pub/Sub action.
from action_triggers.models import MessageBrokerQueue
gcp_pubsub_action = MessageBrokerQueue.objects.create(
config=config,
name="my_gcp_pubsub_broker",
conn_details={
"project": "my-gcp-project",
"topic": "my_topic",
},
parameters={}
)
In this example: - The gcp_pubsub_action is set to send messages to the GCP project my-gcp-project and the my_topic topic.
Step 3: Create a ConfigSignal Model Instance (Trigger)
Finally, link the action to a trigger event, such as saving a model instance.
from action_triggers.models import ConfigSignal
from action_triggers.enums import SignalChoices
config_signal = ConfigSignal.objects.create(
config=config,
signal=SignalChoices.POST_SAVE,
)
Now, whenever a new sale is created, the GCP Pub/Sub action will be triggered.
—
By following these steps, you can configure your project to send messages to GCP Pub/Sub using Django Action Triggers. For more advanced configurations, refer to the related documentation sections.