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:

io.rhiotcamel-pubnub${rhiot.version}

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");

Last updated