While being a specific form of Client-server architecture, Client-Queue-Client is also an alternative to the classic client-server.
The idea for Client-Queue-Client architecture was born when the first complex, heterogeneous client-server systems were implemented. The problem was how to make one client act as a server for other clients. One approach was peer-to-peer architecture, with its nodes instead of clients and servers. The other was Client-Queue-Client, which is simpler to implement.
For example, two instances of web crawlers on different machines need to query each other. If the currently indexed URL is already known to the other machine. The older approach was to handle incoming connections in these crawlers, so the first instance could connect to the second instance and query it directly. The newer approach is to set up some passive queue, such as a relational database, with which both instances communicate, sending subsequent "select" and "insert" queries to the database through a common protocol.