Let's take a look at the standard setup that we have been discussing so far (including a producer, consumer, and three-node RabbitMQ cluster):
If we consider the client domain (publisher/subscriber), we can perform the following:
We can use a client AMQP library written in any programming language (thus integrating RabbitMQ with a particular programming language). We are already using the out-of-the-box RabbitMQ Java client. As RabbitMQ supports a multitude of AMQP clients, you can use one that best suits your application or write your own AMQP client in your programming language of choice, if one is missing.
We can use a wrapper library written on top of a client library. Many applications that use RabbitMQ as a message broker are deployed as part of a web or dependency injection container. For this reason, there are wrappers around the client libraries for different containers, such as the ones provided by the Spring framework and implemented on top of the RabbitMQ Java...