EasyNetQ - parametr prefetchcount jest ignorowany

EasyNetQ - parametr prefetchcount jest ignorowany
K8
  • Rejestracja:ponad 3 lata
  • Ostatnio:7 miesięcy
  • Postów:69
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.

Kopiuj
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:

Kopiuj
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:

Kopiuj
[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

jarzi
  • Rejestracja:około 10 lat
  • Ostatnio:około 4 godziny
  • Postów:96
0

Możesz zwrócić taska z Service

Kopiuj
async Task Service(type msg)

i zamień na Subscribe na SubscribeAsync


Loading...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.