Чтение 'старых' сообщений из ActiveMQ virtual topi c из C# (. net Core) с Apache .NMS - PullRequest
0 голосов
/ 05 мая 2020

Как мне читать сообщения на виртуальном топе c с Apache .NMS?

После создания соединения, сеанса и потребителя я делаю: "consumer.Receive ();".

Сообщения, отправленные во время выполнения этого кода, принимаются, но любые сообщения, которые уже были в топи c до этого, не принимаются.

Я попытался добавить «? Consumer.retroactive = true» в топи c, но, похоже, это ничего не дает.

Я видел примеры с постоянными подписчиками, но при использовании виртуальных топи c мне не нужно этого делать.

1 Ответ

1 голос
/ 05 мая 2020

Решено:

Проблема заключалась в том, что я читал не с того места: я читал из топи c, тогда как я должен был читать из очереди.

Виртуальные темы являются темами, но вы должны потреблять их из очереди потребителя .

Итак, сообщения помещаются в «VirtualTopi c .YourTopicName», и вы должны читать из ОЧЕРЕДИ с именем «Consumer» .YourConsumerName.VirtualTopi c .YourTopicName ". (Очевидно, эта очередь должна существовать до того, как какие-либо сообщения будут опубликованы.)

Причина того, что «старые» сообщения не были прочитаны, заключается в том, что их просто не было.

...