As we've mentioned previously in this chapter, messaging has many different use cases, ranging from IoT and sensor networks to microservices-based distributed applications running in the cloud.
One of the benefits of messaging is that it is a neutral way to connect services implemented using different technologies. When developing an SOA, each service is typically developed and maintained by a dedicated team. Teams may choose the tools they feel comfortable with. This applies to programming languages, third-party libraries, and build systems.
Maintaining a uniform set of tools may be counter-productive as different services may have different needs. For example, a kiosk application may require a Graphical User Interface (GUI) library such as Qt. A hardware controller that is a part of the same application will have other requirements, possibly linking to the hardware manufacturer's third-party components. These dependencies may then impose some...