Publish
ClearBlade uses the Pub/Sub Golang library, which leverages a persistent TCP connection under the covers.
google_pubsub
: A new table for adding Pub/Sub connection details and topics
name
: String column PK
system_key
: String column
project_id
: String column
credentials
: String column (Encrypted. Will contain the credentials JSON file)
topics
: JSONB column (Pub/Sub topics array)
The topics entered during Pub/Sub connection creation will be added as subscribers to the topic tree. The Pub/Sub connection will implement the client
interface in core_messaging/broker/client_manager.go. Use the Publish
function to forward messages.
Endpoints:
/admin/{systemKey}/{name}/google-integrations/pub-sub
GET, POST, PUT, and DELETE support
POST:
Body required. The body can have IoT Core and non-IoT Core topics. type
and target
are required for IoT Core topics. type
can be 1 for events
and 2 for state
:
{ "credentials_map": { // This is the service account JSON object "type": "service_account", "project_id": "myprojectid", "private_key_id": "blahblahblah", "private_key": "<priv_key>", "client_email": "a@a.com", "client_id": "9126871624161341", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dahjkdhajkd%40dajsdgajdadsad.iam.gserviceaccount.com" }, "project_id": "myprojectid", "topics": [ // This is to send data to Google Pub/Sub {"path": "iotdemo"}, // Non IoT Core topic {"path": "/devices/+/events", "type": 1, "target": "performance-testing"}, // IoT Core topic {"path": "/devices/+/events/sub", "type": 1, "target": "performance-testing-sub", "sub_folder": "sub"}, // iot core topic {"path": "/devices/+/state", "type": 2, "target": "performance-testing-state"} // IoT Core topic ], "forwarders": { // This is to receive Google Pub/Sub messages "ack_strategy": 0, "poll_rate": 5000, "max_messages_per_poll": 2, "subscriptions": [ { "mqtt_topic": "pubsub", "pubsub_subscription": "test-sub" } ] } }
path
is the topic the Pub/Sub client will subscribe to internally to the ClearBlade broker. type
is the topic type. No type represents a non-IoT Core topic. 1 is for event
and 2 is for state
. target
is the topic the Pub/Sub client will publish to in Pub/Sub. sub_folder
is for the event's topic if it has a subfolder.
GET:
No query support. Admin or Dev.
Returns the same object as the POST body.
/admin/{systemKey}/google-integrations/pub-sub
GET and DELETE support only. GET obtains all Pub/Sub connections for that system, and DELETE deletes all.
Receiving data
The following parameters exist for setting up your Google Pub/Sub forwarders to ClearBlade MQTT:
ack_strategy: 0 = ack immediately, 1 = never ack. For now, 0 should always be used.
poll_rate: Time (ms) between sending message batches to the broker. 0 will send messages immediately.
max_messages_per_poll: Max number of messages to send in a single batch to the broker. Implicit minimum value of 1.
Messages are received by ClearBlade as soon as possible from Google. ClearBlade will buffer them internally and send them in batches as defined above.