Как долго канал может оставаться в живых, ожидая channel.basicAck от клиента - PullRequest
3 голосов
/ 09 октября 2019

Мне любопытно, если бы не было неожиданной ошибки, будет ли канал работать, пока клиент не подтвердит сообщение (используя channel.basicAck())? Есть ли у канала параметр времени ожидания?

Например, будет ли проблематичен этот код, если xxx очень большой?:

@RabbitListener(queues = DURABLE_QUEUE)
  public void listenAddAndDelete(@Payload Message message, Channel channel,@Header(AmqpHeaders.DELIVERY_TAG) long tag) {
    log.info("receive user msg: {}", message);
    // sleep very long time,then ack,is channel has a timeout?
    Thread.sleep(xxx);
    try {
      channel.basicAck(tag,false);
    } catch (IOException e) {
      //
    }
  }

Дополнительно , Когда канал будет закрыт внормальные обстоятельства?

1 Ответ

0 голосов
/ 09 октября 2019

Как правило, время ожидания не истечет, если пульс включен (что является значением по умолчанию), но сохранение сообщения в этом состоянии в течение длительного времени является анти-паттерном, как я предположил в комментарии к ответув комментарии выше.

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