Удалить сообщение из RabbitMQ при использовании слушателем. Не удается определить исключение сообщения ReplyTo - PullRequest
0 голосов
/ 15 мая 2018

Использование SpringBoot.

Я создал TopicExchange, который принимает сообщения и направляет их в две очереди, основываясь на присутствующем в сообщении routingKey.

Сообщения отправляются через:

rabbitTemplate.convertAndSend('in-out-topic', 'inbound.queue.route.key', payload)

Получены сообщения:

 @RabbitListener(queues = "inbound-queue")
  def onInboundMessage(def message) {
    try {
      log.debug("Received inbound message: ${message.messageId} on inbound queue listener", message)

    } catch (Exception ex) {
      log.error("Inbound message exception: ${ex.getMessage()}")
      return;
    }
    return message.payload
  }

Но когда мой слушатель (потребитель) получает сообщение, я получаю следующее исключение:

org.springframework.amqp.AmqpException: Cannot determine ReplyTo message property value: Request message does not contain reply-to property, and no default response Exchange was set.
  • Должен ли я создатьфиктивный обмен ответами через панель управления RabbitMQ?
  • Жесткий код несуществующего свойства replyTo?
  • Настроить каким-либо образом существующий topicExchange или Queues?

Я просто хочу, чтобы сообщение было удалено из соответствующей очереди при его использовании моим прослушивателем сообщений.

1 Ответ

0 голосов
/ 15 мая 2018

Ваша проблема в конце метода, здесь:

return message.payload

Если вы действительно не собираетесь отправлять ответ, и мы действительно видим, что по ожиданиям через convertAndSend(), вы не должны возвращатьсячто-нибудь из @RabbitListener метода.В противном случае, как вы видите, возврат от такого метода рассматривается как попытка отправить ответ.

См. Дополнительную информацию в Справочном руководстве: https://docs.spring.io/spring-amqp/docs/2.0.3.RELEASE/reference/html/_reference.html#async-annotation-driven. Обратите внимание на параграф Reply Management.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...