Здравствуйте, у меня есть приложение 1 и в нем метод
@PostMapping
public ResponseEntity<String> createOrder(@RequestBody OrderRequest order) throws JMSException {
log.info("### 1 ### Order Service sending order message '{}' to the queue", order.getMessage());
MQQueue orderRequestQueue = new MQQueue("DEV.QUEUE.1");
jmsTemplate.convertAndSend(orderRequestQueue, order.getMessage(), textMessage -> {
textMessage.setJMSCorrelationID(order.getIdentifier());
return textMessage;
});
return new ResponseEntity(order, HttpStatus.ACCEPTED);
}
который отправляет в очередь запрос
и есть приложение 2, которое, если я правильно понял, слушает эту очередь и отправляет в нее ответ
@JmsListener(destination = "DEV.QUEUE.1")
public void receive(Message message) throws JMSException {
TextMessage textMessage = (TextMessage) message;
final String textMessageBody = textMessage.getText();
log.info("### 2 ### Payment Service received message: {} with correlationId: {}",
textMessageBody,
textMessage.getJMSCorrelationID());
// some random logic to complete the order (80% of times it returns true)
Random random = new Random(); //message to convertAndSend
String orderCompleted = (random.nextInt(101) >= 20) ? "payment_ok" : "payment_failed";
// send response
log.info("### 3 ### Payment Service sending response");
MQQueue mqQueue = new MQQueue("DEV.QUEUE.1");
jmsTemplate.convertAndSend(mqQueue, orderCompleted, responseMessage -> {
responseMessage.setJMSCorrelationID(textMessage.getJMSCorrelationID());
return responseMessage;
});
}
Если я правильно понял, то тут реализован принцип CorrelationId to CorrelationId.
Как изменить receive метод под принцип replyToQueue,гуглить пробовал, но не очень удачно?