Camel PubNub component can be used to communicate with the PubNub data stream network for connected devices. This component uses pubnub library
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
pubnub://<pubnubEndpointType>:channel[?options]
The following values are currently supported as pubnubEndpointType:
- pubsub
- presence
| 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. |
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");
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");