Messaging Endpoint

For connecting business applications Bosch IoT Hub provides an AMQP 1.0 based messaging endpoint:

amqps://messaging.bosch-iot-hub.com

Message Format

Bosch IoT Hub uses standard AMQP 1.0 messages and properties. In additional some custom properties are specified:

Section Field Description
properties content-type Defines what type of content resides in application-data
application-properties device_id Device ID of the device that has sent the message
application-data Message payload

Consuming Telemetry Data

Source Address: telemetry/{tenant-id}

Supported delivery modes:

  • AT LEAST ONCE

Consuming Event Data

Source Address: event/{tenant-id}

Supported delivery modes:

  • AT LEAST ONCE
  • AT MOST ONCE

AMQP 1.0 Clients

As Bosch IoT Hub Messaging Endpoint follows the AMQP 1.0 standard you can choose the client of your northbound application as needed. A good entry point to get an overview over available clients for various programming languages can be found here. In addition, an example code for an AMQP based consumer application can be found in IoT Hub Examples GitHub repository..

Java Clients

Bosch IoT Hub itself gets tested, thus is proved to be compatible, with the following Java based AMQP 1.0 clients:

Eclipse Hono Client

Eclipse Hono, the base of Bosch IoT Hub, includes a client for northbound applications. Examples on how to use the client can be found on Developer Guide of Eclipse Hono. We recommend to use this client when

  • your application benefits from Eclipse Hono Client reactive programming model,
  • your application needs access to plain AMQP 1.0 API,
  • you want to benefit from shortcuts for AMQP 1.0 operations specified by Eclipse Hono northbound APIs,
  • you want to use the client that is also used by Eclipse Hono and Bosch IoT Hub components and benefit from knowledge and support of Eclipse Hono community.

Apache Qpid JMS Client

Bosch IoT Hub is also compliant with AMQP 1.0 JMS mapping. Apache Qpid project offers a corresponding AMQP 1.0 based JMS client. We recommend to use this client when

  • you want to benefit from JMS ecosystem,
  • your application can live with blocking code,
  • you need sophisticated out-of-the-box failover handling.