table of contents
You may discuss this page here.
This page contains some Frequently Asked Questions (FAQs).
What is the simplest DDS application I can write?
The contributed HelloWorldApplication contains an example of how to do a minimal application that uses DDS to communicate between multiple computers.
Can DDS be used to send Events?
The short answer is yes. DDS can be used to send any kind of Data, including event data.
The long answer... When people talk about events, they typically refer to two things:
- A particular schema of data (e.g. data that carries a header with specific fields that identify things like the source of the event, the timestamp, the priority, one or more classification categories, keywords, etc.).
- An infrastructure that supports a variety of filtering and dispatch mechanisms based on the header fields, the priority, the content, etc.
In DDS the application developer is responsible for defining the schema for the data. DDS does not define a built-in event type, but the application can define any desired event type and include the fields it wants. In addition the use of time-based filters and ContentFilteredTopic in DDS allows the application to perform flexible filtering of events.
DDS contains a QoS that is richer that most event-dispatching systems as it can be used to propagate not only events but also state information and sampled-data values. When used to propagate events the QoS should be configured to match the typical semantics of events. The typical settings are:
- RELIABILITY QoS kind set to RELIABLE
- HISTORY QoS kind set to KEEP_ALL
- DESTINATION_ORDER QoS kind set to BY_SOURCE_TIMESTAMP
- DEADLINE QoS period set to DURATION_INFINITE
- TIME_BASED_FILTER QoS period set to DURATION_INFINITE
In addition Domains and the PARTITION QoS can be exploited to create flexible and scalable event-distribution overlays.
When should I define a key for my Topic?
Is it possible to discover what is being published on the network?
What is the difference between DDS and JMS?
The short answer is that JMS is message-centric, was developed with enterprise messaging in mind, and works only in Java whereas DDS is data-centric, was developed with real-time applications in mind, and works on multiple platforms.
The Data-Centric model used by DDS can be seen as an extension of the message-centric model of JMS where, in addition to a Topic the application provides a user-defined Key that uniquely identifies a data-object for that Topic. The use of keys allows DDS to offer additional QoS such as the ability to maintain the 'most-recent value' of every data-object, or the ability to control the liveness of individual objects.
A detailed answer to this question requires understanding the publish-subscribe models of JMS and DDS in more detail. The papers in the WhitepapersPage provide a detailed analysis and comparison of DDS with other middleware standards including JMS.
