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 17 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. 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.

  • No labels