Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

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. zero 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 up internally and send in batches as defined above.

  • No labels