General Middleware Enquiries

4 posts / 0 new
Last post
Last seen: 7 months 3 weeks ago
Joined: 02/15/2019
Posts: 44
General Middleware Enquiries


I've tried looking for an answer to this question but haven't seemed to find anything yet. The question is:

In a system with for example 3 machines where 2 of these machines contain a subscriber and the other machine contains a publisher like so:

Machine 1: Publisher 0

Machine 2: Subscriber 0

Machine 3: Subscriber 1

Which machines act as the middleware? Does a machine need to be set as a dedicated middleware? Is there functionality that decides who should control the propagation of the messages through the middleware?

Thank you for taking the time to help me out in advance!

Kaleem Peeroo

PhD Student at City University of London

Last seen: 2 weeks 1 day ago
Joined: 09/23/2018
Posts: 62


You would install Connext DDS on every machine involved in your communication scheme.    Connext is the middleware and sets up our Connext DDS Virtual Databus between all the entities.    Given specific domains and topics,  the entities will 'discover' each other and communications take place by publishers pushing information onto the Connext DDS buss (write) and Subscribers retrieving it (read/take).   ConnextDDS will handle all the details of getting messages from the publishers to the subscribers. 

We have quite a bit of information in our community forum:   The Getting Started Guide is particularly good.    

Welcome to RTI Connext!

The Shapes Demo is a good graphical way of seeing what is going on between the DDS entities.  "Shapes" is the application and it uses DDS under the hood to get publisher data over to the intended subscribers.

Hopefully, this helps.



rip's picture
Last seen: 3 days 17 hours ago
Joined: 04/06/2012
Posts: 324

To clarify, "DDS" is the middleware.  The way you are asking, it sounds like you are assuming that there is a client/server methodology.

DDS is not client/server, it is pure pub/sub.  There is no server.  Or rather, each participant acts as its own server (and is also a client of all other participants, assuming there are common Topics, Types and compatible QoS).

When correctly configured, and there is nothing in the way (firewalls, etc), participants announce their presence, and other participants see the announcements and connection happens, and if the Topics, Types and QoS match, data flows.

It is system, bus and platform independent, assuming you have the correct libraries for your platform (ie, ARM talks to Intel talks to MIPS talks to Linux talks to MacOS talks to Windows talks to 32 bit talks to 64 bit talks to ...).  The provider takes care of the protocols.


Last seen: 7 months 3 weeks ago
Joined: 02/15/2019
Posts: 44

Thank you very much for these explanations. I now further understand the logistics behind communication of the messages. All participants (discovered) are connected to each other and therefore send messages between them depending on who the publisher or subscriber is as well as common Topics, Types and compatible QoS.

Thank you for taking the time to help me out, it is very much appreciated!