Differences - protocol binding

… over WebSocket

Criteria Description
Programming language Almost any Web oriented programming language, e.g. Java, JavaScript, .NET
Connection paradigm Connection-oriented
with an always open and managed connection with only one-time handshake overhead for lowest latency and highest throughput.
Channel security WSS
WebSocket over Transport Layer Security
Message exchange pattern non-blocking
request - asynchronous response
Authentication mechanism ✔ User authentication using a JSON Web Token (JWT) issued by Suite Auth, Bosch-ID, Google, your custom OAuth2 provider. See Authenticate as a user
✔ Technical client authentication using a JSON Web Token (JWT) issued by Suite Auth, Bosch-ID, Google, or your custom OAuth2 authorization provider. See Authenticate as a technical client
Equivalent available in open source Eclipse Ditto The complete protocol is defined in Eclipse Ditto.
Horizontal scaling WebSockets do not allow horizontal scaling. Every connected WebSocket will receive all events and messages which it is allowed to receive depending on the provided authentication.

… over AMQP

Criteria Description
Programming language Almost any programming language, as long as an AMQP client is available.
Connection paradigm Connection-oriented
with a managed connection, which can be opened or closed on demand.
Channel security AMQPS
AMQP over Transport Layer Security
Message exchange pattern non-blocking
request - asynchronous response
Authentication mechanism ✔ User authentication (with username and password)
Equivalent available in open source Eclipse Ditto The complete protocol is defined in Eclipse Ditto.
Additionally, for AMQP messages Ditto provides payload mapping functionality.
(You can map incoming messages to Eclipse Ditto conform payload and vice versa.)
Horizontal scaling ✔ Can be scaled horizontally by configuring the client count of the connection. Messages and events will be dispatched by a round robin mechanism to the different clients.

… over MQTT

Criteria Description
Programming language Almost any programming language, as long as an MQTT client is available.
Connection paradigm Connection-oriented
with a managed connection, which can be opened or closed on demand.
Channel security SSL
MQTT over Transport Layer Security
Message exchange pattern non-blocking
request - asynchronous response
Authentication mechanism ✔ User authentication (with username and password)
✔ Client certificate authentication
Equivalent available in open source Eclipse Ditto The complete protocol is defined in Eclipse Ditto.
Additionally, for MQTT messages Ditto provides payload mapping functionality.
(You can map incoming messages to Eclipse Ditto conform payload and vice versa.)
Horizontal scaling ✔ Can be scaled horizontally by configuring the client count of the connection. Messages and events will be dispatched by a round robin mechanism to the different clients.

… over Apache Kafka

Criteria Description
Programming language Almost any programming language, as long as Kafka supports it.
Connection paradigm Connection-oriented with a managed connection, which can be opened or closed on demand.
Channel security SSL
over Transport Layer Security
Message exchange pattern non-blocking
request - asynchronous response
Authentication mechanism ✔ User authentication (with username and password)
Equivalent available in open source Eclipse Ditto The complete protocol is defined in Eclipse Ditto.
Additionally, for outgoing Kafka messages Ditto provides payload mapping functionality.
You can map outgoing messages to Eclipse Ditto conform payload.)
Horizontal scaling ✔ Can be scaled horizontally by configuring the client count of the connection.
Please note that the scaling is limited by the number of partitions of the Kafka topic which should be consumed by the connection.
If you configure a client count higher that the number of available partitions, this means that a consumer idles. It’s not possible two have two consumers consuming the same partition.

… to HTTP endpoint

Criteria Description
Programming language Almost any programming language capable of starting an HTTP server.
Connection paradigm Connectionless protocol: for each outgoing message one HTTP request is done.
Channel security HTTPS
HTTP over Transport Layer Security
Message exchange pattern blocking
request - response
Authentication mechanism ✔ User authentication (with username and password)
✔ Client certificate authentication
Equivalent available in open source Eclipse Ditto The complete protocol is defined in Eclipse Ditto.
Additionally, for outgoing HTTP messages Ditto provides payload mapping functionality.
(You can map outgoing messages to Eclipse Ditto conform payload.)
Horizontal scaling ✔ Can be scaled horizontally by configuring the client count of the connection. Messages and events will be dispatched by a round robin mechanism to the different clients.
Corporate information Data protection notice Legal information Support Free plans