W mojej aplikacji testowej widzę wiadomości, które zostały przetworzone, a wyjątek jest automatycznie wstawiany do domyślnej wartości EasyNetQ_Default_Error_Queue, co jest świetne. Mogę wtedy z powodzeniem zrzucić lub zresetować te komunikaty za pomocą Hosepipe, która również działa dobrze, ale wymaga zejścia do linii poleceń i wywołania zarówno z Hosepipe, jak i RabbitMQ API, aby oczyścić kolejkę ponawianych wiadomości.Czy można łatwo subskrybować domyślną kolejkę błędów w programie EasyNetQ?
Myślę, że najłatwiejszym podejściem do mojej aplikacji jest po prostu zasubskrybowanie kolejki błędów, więc mogę ponownie przetworzyć je za pomocą tej samej infrastruktury. Ale w EastNetQ kolejka błędów wydaje się być wyjątkowa. Musimy subskrybować za pomocą odpowiedniego typu i routingu identyfikator, więc nie jestem pewien, co te wartości powinny być dla kolejki błędu:
bus.Subscribe<WhatShouldThisBe>("and-this", ReprocessErrorMessage);
mogę użyć prostego API zapisać się do kolejki błędów, lub czy muszę zagłębić się w advanced API?
Jeśli typ mojej oryginalnej wiadomości był TestMessage
, to chciałbym być w stanie zrobić coś takiego:
bus.Subscribe<ErrorMessage<TestMessage>>("???", ReprocessErrorMessage);
gdzie ErrorMessage
jest klasą dostarczone przez EasyNetQ owinąć wszystkie błędy. czy to możliwe?
Dzięki za pomoc Mike. Czy uważasz, że dobrym pomysłem byłoby wyeksponowanie tego przyjaznego opakowania? Domyślnie proste API zapisuje do tej kolejki błędów, więc dla mnie ma sens, aby miał mechanizm do przezroczystego spożywania tych błędów. Nawet z kodem powyżej, myślę, że trzeba mieć jakiś rodzaj instrukcji switch w module obsługi komunikat błędu ('przełącznik (error.BasicProperties.Type)'), który następnie pozwala mi deserializowania oryginalną wiadomość do odpowiedniego typu, który jest nieco brzydki. Byłoby miło, gdybym mógł zapisać się do konkretnego rodzaju błędu, który mnie interesuje. –
BTW Uwielbiam bibliotekę EastNetQ. Dziękuję za ciężką pracę i wspaniałą dokumentację. –
Dzięki za miłe słowa! Dodałem Twoją sugestię do listy problemów https://github.com/mikehadlow/EasyNetQ/issues/71, ale nie jestem do końca przekonany. –