A fanout (or topic) exchange with one queue per service; the 3 instances of a service consume from that service's queue
Use one queue per service, bound to a fanout or topic exchange. Each service gets its own queue, so each service gets its own copy of every event. This is fan-out between services. Inside one service, the 3 instances share that service's queue. This is competing consumers: each event goes to only one instance of that service.
"One shared queue that all 9 instances consume from" is wrong. Each event would go to only one of the 9 instances, so two of the three services would miss it.
"One queue per instance, so 9 queues bound to the exchange" is also wrong. Every instance would get its own copy, so all 3 instances of a service would process the same event 3 times.
Read more