There are several design options for distributing components in a system. Obviously, some are better than others. This section will detail some of the bad and some of the good design options.
I do not recommend this design option in general. It is included here because I have encountered it in the wild more than once, and it deserves some detail.
Using a database as a communication medium generally leads to an architecture that is not optimal for storing and retrieving communication information. The more common databases are relational databases. Choosing to implement communication between distributed components through a shared database will generally mean choosing a known database, or a database that makes the development team most comfortable. Communicating information from point A to point B does not make much use of RDBMS's distinct features. Communicating information is a LIFO queue, the oldest data written is the first data read. The following...