blob: adef22569de2456803be50a322b4b8a3a9d5998a [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="blogconnectivity, ">
<title> Ditto's connectivity capabilities are pimped up </title>
<link rel="stylesheet" href="css/syntax.css">
<link rel="stylesheet" type="text/css" href="//" crossorigin="anonymous">
<link rel="stylesheet" href="css/modern-business.css">
<link rel="stylesheet" href="//" crossorigin="anonymous">
<link rel="stylesheet" href="css/customstyles.css">
<link rel="stylesheet" href="css/boxshadowproperties.css">
<link rel="stylesheet" href="css/theme-ditto.css">
<link rel="stylesheet" href=",700|Source+Code+Pro:300,600|Titillium+Web:400,600,700">
<script src="//" crossorigin="anonymous"></script>
<script src="//" crossorigin="anonymous"></script>
<script src="//" crossorigin="anonymous"></script>
<script src="js/toc.js"></script>
<script src="js/customscripts.js"></script>
<script type="application/ld+json">
"@context": "",
"@type": "Organization",
"url": "",
"logo": ""
<link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="images/favicon-96x96.png" sizes="96x96">
<link rel="alternate" type="application/rss+xml" title="Eclipse Ditto Blog" href="">
<!-- Eclipse Foundation cookie consent: -->
<link rel="stylesheet" type="text/css" href="//" />
<script src="//"></script>
$(document).ready(function() {
$("#tg-sb-link").click(function() {
new Date().getTime(),event:'gtm.js'});
var f=d.getElementsByTagName(s)[0],
<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container topnavlinks">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<a class="navbar-ditto-home" href="index.html">&nbsp;<img src="images/ditto_allwhite_symbolonly.svg" class="ditto-navbar-symbol" alt="Home"> <img src="images/ditto_allwhite_textonly.svg" class="ditto-navbar-symbol-text" alt="Ditto"></a>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<!-- toggle sidebar button -->
<!--<li><a id="tg-sb-link" href="#"><i id="tg-sb-icon" class="fa fa-toggle-on"></i> Nav</a></li>-->
<!-- entries without drop-downs appear here -->
<li><a href="blog.html">Blog</a></li>
<li><a href="intro-overview.html">Documentation</a></li>
<li><a href="http-api-doc.html">HTTP API</a></li>
<li><a href="" target="_blank">Sandbox</a></li>
<li><a href="" target="_blank">GitHub</a></li>
<li><a href="" target="_blank">GitHub examples</a></li>
<!-- entries with drop-downs appear here -->
<!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Links<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="" target="_blank">Eclipse Ditto Project</a></li>
<li><a href="" target="_blank">Forum</a></li>
<li><a href="" target="_blank">Jenkins</a></li>
<li><a href="" target="_blank">Mailing list archives</a></li>
<li><a href="" target="_blank"> chat</a></li>
<!--comment out this block if you want to hide search-->
<!--start search-->
<div id="search-demo-container">
<input type="text" id="search-input" placeholder="search...">
<ul id="results-container"></ul>
<script src="//" type="text/javascript"></script>
<script type="text/javascript">
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('results-container'),
dataSource: 'search.json',
searchResultTemplate: '<li><a href="{url}" title="Ditto's connectivity capabilities are pimped up">{title}</a></li>',
noResultsText: 'No results found.',
limit: 10,
fuzzy: true,
<!--end search-->
<!-- /.container -->
<!-- Page Content -->
<div class="container">
<div id="main">
<!-- Content Row -->
<div class="row">
<!-- Content Column -->
<div class="col-md-12" id="tg-sb-content">
<!-- Look the author details up from the site config. -->
<!-- Output author details if some exist. -->
<!-- Output author details if some exist. -->
<!--&lt;!&ndash; Mugshot. &ndash;&gt;-->
<!--<img src="" alt="A photo of Thomas Jäckle" />-->
<!--&lt;!&ndash; Personal Info. &ndash;&gt;-->
<!--Written by <a href="" target="_blank">Thomas Jäckle</a>-->
<article class="post" itemscope itemtype="">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">Ditto's connectivity capabilities are pimped up</h1>
<p class="post-meta">Published by <img src="" alt="A photo of Thomas Jäckle" style="width:50px;border-radius:50%;display:inline-block;margin-right:5px;" /><span itemprop="author" itemscope itemtype=""><span itemprop="name"><a href="" target="_blank">Thomas Jäckle</a> </span></span> on <time datetime="2018-04-25T00:00:00+00:00" itemprop="datePublished">Apr 25, 2018</time> - Tags:
<a href="tag_blog.html">blog</a>,
<a href="tag_connectivity.html">connectivity</a>
<div class="post-content" itemprop="articleBody">
<p>It has been quite lately on our website and on GitHub as the Ditto team currently prepares its new <code class="highlighter-rouge">connectivity</code>
microservice. Until now Ditto’s <code class="highlighter-rouge">amqp-bridge</code> service could connect to AMQP1.0 endpoints
(e.g. <a href="">Eclipse Hono</a>).</p>
<p>That worked quite well, but still had some issues:</p>
<li>failover/reconnection was not always done properly</li>
<li>the current connection state could not yet be retrieved</li>
<li>AMQP 1.0 is a great protocol including <a href="">reactive principles</a> but it still is not very “mainstream”</li>
<li>the AMQP 1.0 messages consumed by Ditto already had to be in <a href="protocol-overview.html">Ditto Protocol</a>, otherwise Ditto
could not understand them</li>
<p>Our current implementation focus lies on two GitHub issues resolving those problems:</p>
<li><a href="">Enhance existing AMQP-bridge with AMQP 0.9.1 connectivity</a></li>
<li><a href="">Support mapping arbitrary message payloads in AMQP-bridge</a></li>
<h2 id="changes-and-enhancements">Changes and Enhancements</h2>
<h3 id="renaming">Renaming</h3>
<p>With the new responsibilities of the former amqp-bridge we have renamed the <code class="highlighter-rouge">amqp-bridge-service</code> to <code class="highlighter-rouge">connectivity-service</code>. <br />
The Docker image and the Maven artifacts are affected by this change.</p>
<h3 id="enhanced-connectivity">Enhanced connectivity</h3>
<p>The new <a href="architecture-services-connectivity.html">connectivity</a> microservice can now manage and handle both AMQP 1.0 and
AMQP 0.9.1 connections at the same time. <br />
That means that Ditto from now on supports connecting to running AMQP 1.0 endpoints or to AMQP 0.9.1 brokers (e.g. RabbitMQ).
The architecture of the <code class="highlighter-rouge">connectivity</code> microservice is designed to also support connecting via other protocols in the future.</p>
<p>Need to connect to a Kafka in order to process digital twin <a href="basic-signals-command.html">commands</a> from there or publish
<a href="basic-changenotifications.html">change notifications</a>? <br />
Or want to send all state changes happening to twins to a time series database?</p>
<p>The <code class="highlighter-rouge">connectivity</code> service is the new place to integrate your managed digital twins with other systems.</p>
<h3 id="json-format-of-connections">JSON format of connections</h3>
<p>As Ditto now supports more than AMQP 1.0, we had to adjust the JSON format for creating new connections.
The new one is documented here: <a href="connectivity-manage-connections.html">Manage connections in connectivity</a>.</p>
<h3 id="payload-mapping-of-external-messages">Payload mapping of external messages</h3>
<p>Eclipse Ditto is about providing access to IoT devices via the <a href="intro-digitaltwins.html">digital twin</a> pattern. In order to
provide structured APIs for different heterogeneous devices Ditto defines a lightweight JSON based <a href="basic-overview.html">model</a>.</p>
<p>Devices in the IoT, may they be brownfield devices or newly produced devices, will probably not send their data to the
cloud in the structure and <a href="protocol-overview.html">protocol</a> Ditto requires. They should not need to be aware of something
like Ditto running in the cloud mirroring them as digital twins.</p>
<p>That’s why we added a JavaScript based payload mapping to the <code class="highlighter-rouge">connectivity</code> service which is responsible for:</p>
<li>transforming text- or byte-payload from messages consumed via a <code class="highlighter-rouge">source</code> of a created connection to
<a href="protocol-overview.html">Ditto Protocol</a> <a href="basic-signals-command.html">commands</a> and <a href="basic-messages.html">messages</a></li>
<li>transforming back <a href="basic-signals-commandresponse.html">responses</a> issued by commands and <a href="basic-signals-event.html">events</a>
from Ditto Protocol to some text- or byte-payload before sending the message back via the configured <code class="highlighter-rouge">target</code> channel</li>
<p>The <code class="highlighter-rouge">incoming</code> and <code class="highlighter-rouge">outgoing</code> scripts must be configured when creating a new connection
<a href="connectivity-manage-connections.html">via DevOps commands</a>.</p>
<h2 id="example">Example</h2>
<p>Please find more information and examples at:</p>
<li><a href="connectivity-overview.html">Connectivity overview</a></li>
<li><a href="connectivity-mapping.html">Payload mapping in connectivity</a></li>
<p><br />
<br /></p>
<figure><img class="docimage" src="images/ditto.svg" alt="Ditto" style="max-width: 500px" /></figure>
<p><br />
The Eclipse Ditto team</p>
<hr class="shaded"/>
<div class="row">
<div class="col-lg-12 footer">
<div class="logo">
<a href=""><img src="images/eclipse_foundation_logo.svg" alt="Eclipse logo"/></a>
<p class="notice">
&copy;2020 Eclipse Ditto.
Site last generated: Dec 9, 2020 <br />
<div class="quickLinks">
<a href="" target="_blank">
&gt; Privacy Policy
<a href="" target="_blank">
&gt; Terms of Use
<a href="" target="_blank">
&gt; Copyright Agent
<a href="" target="_blank">
&gt; Legal
<a href="" target="_blank">
&gt; License
<a href="" target="_blank">
&gt; Report a Vulnerability
<!-- /.row -->
<!-- /.container -->
<!-- /#main -->