Why put a queue between two services instead of calling directly?
To decouple availability and rate. A direct call means the caller is down when the callee is down, and the caller's throughput is capped by the callee's. A queue lets the producer keep accepting work while the consumer is slow or restarting, absorbs spikes rather than shedding them, and lets you scale the consumer independently. What you buy it with is latency, ordering that is now your problem, and a whole second system to operate.