船运:
@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());
}
}
问题是该消息仅到达其中一个听众。如何做到让每个人都来?
如果所有侦听器都订阅了同一个队列,那么只有第一个收到消息的侦听器会处理该消息。您可以创建多个队列(为每个侦听器)并通过将它们绑定到相同的 Exchange 和 RoutingKey 来一次向所有队列发送消息。更多在这里