Как отправить сообщение всем слушателям RabbitMQ, Spring boot

Отправка:

@Service
public class ProducerImp implements Producer {
    @Autowired
    private AmqpTemplate amqpTemplate;

    @Value("${jsa.rabbitmq.exchange}")
    private String exchange;

    @Value("${jsa.rabbitmq.routingkey}")
    private String routingKey;


    @Override
    public void produceMsg(MessageDTO msg) {
        amqpTemplate.convertAndSend(exchange, routingKey, msg);
        System.out.println("Send msg = " + msg);
    }
}

слушатель (Остальные такие же):

@Component
public class SubscribeServiceImpl {
    @RabbitListener(queues="jsa.queue")
    public void recievedMessage(MessageDTO msg) {
        System.out.println("Recieved Message: " + msg.getMessage());
    }

}

Проблема в том что сообщение приходит только одному из слушателей. Как сделать так чтоб приходила всем?


Ответы (1 шт):

Автор решения: motpfofs

Если все слушатели подписаны на одну и ту же очередь, то сообщение обработает только один слушатель, который первым получил сообщение. Вы можете создать несколько очередей (для каждого из слушателей) и посылать сообщение во все очереди сразу привязав их к одному Exchange и RoutingKey. Подробней тут

→ Ссылка