Camel PubNub component

Camel PubNub component can be used to communicate with the PubNub data stream network for connected devices. This component uses pubnub library

Maven dependency

Maven users should add the following dependency to their POM file:

<dependency>
  <groupId>io.rhiot</groupId>
  <artifactId>camel-pubnub</artifactId>
  <version>${rhiot.version}</version>
</dependency>

Avaliable for rhiot.version >= 0.1.1

General URI format

pubnub://<pubnubEndpointType>:channel[?options]

The following values are currently supported as pubnubEndpointType:

  • pubsub
  • presence

URI Parameters

Option Default value Description
publisherKey The punub publisher key optained from pubnub. Mandatory for publishing events
subscriberKey The punub subsciber key optained from pubnub. Mandatory when subscribing to events
secretKey The pubnub secret key.
ssl true Use SSL transport.
uuid The uuid identifying the connection. If not set it will be auto assigned
operation PUBLISH Producer only. The operation to perform when publishing events or ad hoc querying pubnub. Valid values are HERE_NOW, WHERE_NOW, GET_STATE, SET_STATE, GET_HISTORY, PUBLISH

Operations can be used on the producer endpoint, or as a header:

Operation Description
PUBLISH Publish a message to pubnub. The message body shold contain a instance of org.json.JSONObject or org.json.JSONArray. Otherwise the message is expected to be a string.
HERE_NOW Read presence (Who's online) information from the endpoint channel.
WHERE_NOW Read presence information for the uuid on the endpoint. You can override that by setting the header CamelPubNubUUID to another uuid.
SET_STATE Set the state by uuid. The message body should contain a instance of org.json.JSONObject with any state information. By default the endpoint uuid is updated, but you can override that by setting the header CamelPubNubUUID to another uuid.
GET_STATE Get the state object org.json.JSONObject by for the endpoint uuid. You can override that by setting the CamelPubNubUUID header to another uuid.
GET_HISTORY Gets the message history for the endpoint channel.

Consuming:

Route that consumes messages from mychannel:

from("pubnub://pubsub:mychannel?uuid=master&subscriberKey=mysubkey").routeId("my-route")
.to("log:default?showHeaders=true");

Route that listens for presence (eg. join, leave, state change) events on a channel

from("pubnub://presence:mychannel?subscriberKey=mysubkey").routeId("presence-route")
.to("log:default?showHeaders=true");

Producing

Route the collect data and sendt it to pubnub channel mychannel:

from("timer:default?period=2000").routeId("device-event-route")
.bean(EventGeneratorBean.class, "getEvent()")
.convertBodyTo(JSONObject.class)
.to("pubnub://pubsub:mychannel?uuid=deviceuuid&publisherKey=mypubkey");