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. |