Сохраняет ли RabbitMQ открытую связь для потребителя?

Я смог выполнить это, создав собственный метод расширения.

static class Extensions {
  internal static IEnumerable<Tuple<int, int, int>> GroupAdj(this IEnumerable<Cls> enumerable) {
    Cls start = null;
    Cls end = null;
    int value = Int32.MinValue;

    foreach (Cls cls in enumerable) {
      if (start == null) {
        start = cls;
        end = cls;
        continue;
      }

      if (start.Value == cls.Value) {
        end = cls;
        continue;
      }

      yield return Tuple.Create(start.SequenceNumber, end.SequenceNumber, start.Value);
      start = cls;
      end = cls;
    }

    yield return Tuple.Create(start.SequenceNumber, end.SequenceNumber, start.Value);
  }
}

Вот реализация:

static void Main() {
  List<Cls> items = new List<Cls> {
    new Cls { SequenceNumber = 1, Value = 9 },
    new Cls { SequenceNumber = 2, Value = 9 },
    new Cls { SequenceNumber = 3, Value = 15 },
    new Cls { SequenceNumber = 4, Value = 15 },
    new Cls { SequenceNumber = 5, Value = 15 },
    new Cls { SequenceNumber = 6, Value = 30 },
    new Cls { SequenceNumber = 7, Value = 9 }
  };

  Console.WriteLine("From  To    Value");
  Console.WriteLine("===== ===== =====");
  foreach (var item in items.OrderBy(i => i.SequenceNumber).GroupAdj()) {
    Console.WriteLine("{0,-5} {1,-5} {2,-5}", item.Item1, item.Item2, item.Item3);
  }
}

И ожидаемый вывод:

From  To    Value
===== ===== =====
1     2     9
3     5     15
6     6     30
7     7     9
0
задан Fonsini 8 February 2019 в 16:27
поделиться

1 ответ

После подписки соединение (TCP?) остается открытым все время для поддержки последующих обратных вызовов? Я имею в виду, что обратные вызовы используют то же соединение, которое было инициировано потребителем при подписке?

Да. Вы можете наблюдать это, используя множество различных средств - сетевые инструменты, такие как netstat, ss, Wireshark, или используя инструменты RabbitMQ, такие как веб-интерфейс управления или команда rabbitmqctl. Наконец, все соединения / разъединения регистрируются.


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает список рассылки rabbitmq-users и только иногда отвечает на вопросы о StackOverflow.

0
ответ дан Luke Bakken 8 February 2019 в 16:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: