我想为微服务收到的每个 REST 调用创建一个唯一的队列,以便它与另一个微服务进行通信。是否可以创建一次性队列来在两个微服务之间进行通信?
我是 RabbitMQ 的新手。我想创建两个通过 RabbitMQ 队列进行通信的 spring-boot 微服务。当微服务 1 收到对其端点的 REST 调用时,它应该向微服务 2 发送消息并接收响应消息并将其发送回用户。这里,微服务1应该为每个请求创建一个队列,以便微服务2可以监听该队列提供的响应,然后该队列应该被删除。 我希望这个生命周期是同步的。
也许你想要的是像“RPC”这样的sendAndReceive或convertSendAndReceive。
rabbitTemplate.convertSendAndReceive(RabbitMQConstants.EXCHANGE_NAME,
routingKey,
message,
getMessagePostProcessor(),
new CorrelationData(UUID.randomUUID().toString())));
private static MessagePostProcessor getMessagePostProcessor() {
return messagePostProcessor -> {
messagePostProcessor.getMessageProperties().setHeader("offSetDateTime", OffsetDateTime.now());
messagePostProcessor.getMessageProperties().setMessageId(UUID.randomUUID().toString());
messagePostProcessor.getMessageProperties().setTimestamp(Date.from(OffsetDateTime.now().toInstant()));
messagePostProcessor.getMessageProperties().setReplyTo(RabbitMQConstants.EXCHANGE_NAME.concat("_reply-to"));
messagePostProcessor.getMessageProperties().setDelayLong(5L);
return messagePostProcessor;
};
}
看这个: https://docs.spring.io/spring-amqp/reference/amqp/request-reply.html