如何使用spring amqp配置rabbitmq应答队列?
我们正在尝试使用Spring AMQP在RabbitMQ中进行异步调用,有人能告诉我如何使用Spring AMQP配置replyqueue、correlationId、(属性)吗如何使用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()
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)代码>制作人没有理由有任何相关性
和回复队列
。请看加里的答案