2013-11-08 4 views
0

Мы пытаемся сделать асинхронный вызов в RabbitMQ с использованием Spring AMQP, может ли кто-нибудь рассказать мне, как настроить answerqueue, correId, (свойства) с помощью Spring amqp?Как настроить очереди ответов rabbitmq, используя spring-amqp?

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

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

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

ответ

1

Я предполагаю, что вы должны использовать RabbitTemplate:

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

НТН

+1

CorrelationData используется для издателя подтверждает не общую корреляцию. Используя этот метод, вы должны установить идентификатор корреляции в 'postProcessMessage'. Или, как я ответил на список кроликов, вы можете использовать один из методов '... sendAndReceive ...()' шаблона, и шаблон позаботится о корреляции для вас. –

+0

Спасибо за ответ. Все еще застрял во время работы с весной amqp, ниже - код в конце Producer. String corrId = UUID.randomUUID(). ToString(); \t \t \t Строка replyQueueName = channel.queueDeclare(). GetQueue(); \t \t \t \t \t \t MessageProperties prop = new MessageProperties(); \t \t \t prop.setCorrelationId (corrId.getBytes()); \t \t \t prop.setReplyTo (replyQueueName); \t \t \t Сообщение сообщения = новое сообщение (query.getBytes(), prop); \t \t \t Сообщение msg = rabbitTemplate.sendAndReceive (сообщение); Не могли бы вы рассказать мне, как получить канал здесь, чтобы получить ответQueue, и, пожалуйста, поделитесь также с потребительским кодом. Заранее спасибо. – Pand005

+0

Чтобы получить «канал» от Потребителя, ваш 'messageListener' должен реализовать' ChannelAwareMessageListener' –

Смежные вопросы