EasyNetQ - parametr prefetchcount jest ignorowany

0

Hej,

Taka sytuacja. Chciałem zakolejkować pewne operacje, w taki sposób, żeby szły one szeregowo, bez zrównoleglenia. Ustawiłem Prefetchcount na 1 w dwóch miejscach, przy tworzeniu busa i przy samej subskrypcji.

ConnectionConfiguration conConfig = new ConnectionConfiguration()
{
    UserName = own_s.RABBIT_USER,
    Password = own_s.RABBIT_PASSWORD,
    VirtualHost = own_s.RABBIT_VHOST,
    PrefetchCount = 1
};

_bus.PubSub.Subscribe<type>(
        “topic”,
        (req) => Service(req),
        (cfg) => cfg.WithPrefetchCount(1));

Dla potrzeb testowych zrobiłem prostego callbacka:

async void Service(type msg)
        {
            var g = Guid.NewGuid();
            Log.Information($"Callback started: {g}");
            await Task.Delay(20000);
            Log.Information($"Callback ended: {g}");
        }

I co mam w logu:

[2023-05-09 22:21:18.998 +02:00  INF]  Callback started: 1d2e702d-d8eb-4991-a606-4308348d8a56
[2023-05-09 22:21:30.066 +02:00  INF]  Callback started: e43f4b10-ce0e-4ae1-a956-5c98028a9c7a
[2023-05-09 22:21:38.830 +02:00  INF]  Callback started: 84004c21-1dd1-4819-b45c-d04e073ee3cf
[2023-05-09 22:21:39.002 +02:00  INF]  Callback ended: 1d2e702d-d8eb-4991-a606-4308348d8a56
[2023-05-09 22:21:50.071 +02:00  INF]  Callback ended: e43f4b10-ce0e-4ae1-a956-5c98028a9c7a
[2023-05-09 22:21:58.835 +02:00  INF]  Callback ended: 84004c21-1dd1-4819-b45c-d04e073ee3cf

Wniosek oczywisty - subskrybent nie czeka na zakończenie przetwarzania wiadomości, tylko pobiera kolejne z kolejki, a przy takim a nie innym ustawieniu prefetchcount powinien czekać.

Czy ktoś miał podobny problem? Tutaj model jest prosty jak nie powiem co - wręcz makieta, albo tutorial - musi działać. A nie działa...

Kal

0

Możesz zwrócić taska z Service

async Task Service(type msg)

i zamień na Subscribe na SubscribeAsync

1 użytkowników online, w tym zalogowanych: 0, gości: 1