是否可以在RabbitMQ中创建一次性队列?

问题描述 投票:0回答:1

我想为微服务收到的每个 REST 调用创建一个唯一的队列,以便它与另一个微服务进行通信。是否可以创建一次性队列来在两个微服务之间进行通信?

我是 RabbitMQ 的新手。我想创建两个通过 RabbitMQ 队列进行通信的 spring-boot 微服务。当微服务 1 收到对其端点的 REST 调用时,它应该向微服务 2 发送消息并接收响应消息并将其发送回用户。这里,微服务1应该为每个请求创建一个队列,以便微服务2可以监听该队列提供的响应,然后该队列应该被删除。 我希望这个生命周期是同步的。

spring-boot rabbitmq spring-amqp spring-rabbit
1个回答
0
投票

也许你想要的是像“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

© www.soinside.com 2019 - 2024. All rights reserved.