Domain

Represents a global data space. It is a logical scope (or "address space") for Topic and Type definitions. Each Domain is uniquely identified by an integer domain ID. Domains are completely independent from each other.  For two DDS applications to communicate with each other they must join the same DDS Domain.

DDS Entities can be part of only one domain, and only interact with data with in that domain. When a DomainParticipant is created, you must specify the domain it will join. All the entities created by that DomainParticipant will be within the same domain.

An application can be part of multiple domains by creating a DomainParticipant for each domain it wants to join.

Entities in different domains do not communicate with each other - they simply do not discover each other.

Domains can be used as a mechanism to isolate independent applications or to co-exist indpendent executions of the same application within the same network, for example, isolating a test environment from a production environment.

Example use cases:

  1. Run different tests in different domains to ensure tests are not interfering with each other even if they run on the same physical hardware. 
  2. Assign a domain ID per subsystem to be sure that data is isolated to individual subsystems.
  3. Assign developers different domain IDs to use while running tests during feature development so developer A (on domain 1) is interfering with developer B (on domain 2).

Comments

 Entity ref link update to https://community.rti.com/glossary/entity 

~Ashish