A distributed system can involve components which effectively need to operate in a more tightly coupled way. Use of a message queue or a service bus may be overkill. Alternatively, some components may simply need to communicate with third-party services or products in a specific way, like via TCP/UDP.
Although the act of designing and creating a distributed system that communicates via TCP or UDP seems straightforward at a high level, some of the details can be a bit tedious. At a high level, it may simply seem like one side sends data and the other side listens and receives data. Nevertheless, these components are decoupled by way of independent computers and network (that may involve several connection points in between such as switches and routers). It is very easy for the communication between these components to become disconnected or redirected and delayed.
It is very important to have robust communications, even when implementing TCP or UDP. Care must be taken to detect and...