如何使用spring amqp配置rabbitmq应答队列?

如何使用spring amqp配置rabbitmq应答队列?,rabbitmq,amqp,spring-amqp,Rabbitmq,Amqp,Spring Amqp,我们正在尝试使用Spring AMQP在RabbitMQ中进行异步调用,有人能告诉我如何使用Spring AMQP配置replyqueue、correlationId、(属性)吗 String corrId = java.util.UUID.randomUUID().toString(); BasicProperties props = new BasicProperties .Builder()

我们正在尝试使用Spring AMQP在RabbitMQ中进行异步调用,有人能告诉我如何使用Spring AMQP配置replyqueue、correlationId、(属性)吗

    String corrId = java.util.UUID.randomUUID().toString();

 BasicProperties props = new BasicProperties
                                .Builder()
                                .correlationId(corrId)
                                .replyTo(replyQueueName)
                                .build();

 channel.basicPublish("", requestQueueName, props, message.getBytes());

我假设您需要使用
rabbitmplate

rabbitTemplate.convertAndSend(requestQueueName, myObj, new MessagePostProcessor() {
   Message postProcessMessage(Message message) throws AmqpException {
      message.getMessageProperties().setReplyTo(replyQueueName);
      return message;  
   }
}, new CorrelationData(corrId));

HTH

相关性数据用于发布者确认,而非一般相关性。使用此技术,您应该在
后处理消息
中设置相关id。或者,正如我在兔子列表中回答的那样,您可以使用模板的
…send and receive…()
方法之一,模板将为您处理相关性。感谢您的回复。在使用SpringAMQP时,我仍然被卡住,下面是生产者端的代码。字符串corrId=UUID.randomUUID().toString();字符串replyQueueName=channel.queueDeclare().getQueue();MessageProperties=newmessageproperties();prop.setCorrelationId(corrId.getBytes());属性setReplyTo(replyQueueName);消息消息=新消息(query.getBytes(),prop);Message msg=rabbitemplate.sendandereceive(消息);请告诉我如何在这里获得频道以获取replyQueue,并请分享消费者代码。提前感谢。要从消费者处获得
频道
,您的
messageListener
应该实现
ChannelAwareMessageListener
感谢回复Bilen。我在上面分享的代码在生产者端。我们真的需要在生产者端实现ChannelAwareMessageListener吗?如果您使用
rabbitTemplate.sendAndReceive(message)制作人没有理由有任何
相关性
回复队列
。请看加里的答案