Czy istnieje elegancki sposób planowania zadań za pomocą NServiceBus. Jest jeden sposób, który znalazłem podczas searching the net. Czy NServiceBus udostępnia wewnętrzne interfejsy API do planowania.Jak zaplanować uruchamianie zadania codziennie przy użyciu NServiceBus
Odpowiedz
NServiceBus teraz ma to wbudowane w
Stąd http://docs.particular.net/nservicebus/scheduling-with-nservicebus
public class ScheduleStartUpTasks : IWantToRunWhenTheBusStarts
{
public void Run()
{
Schedule.Every(TimeSpan.FromMinutes(5)).Action(() =>
Console.WriteLine("Another 5 minutes have elapsed."));
Schedule.Every(TimeSpan.FromMinutes(3)).Action(
"MyTaskName",() =>
{
Console.WriteLine("This will be logged under MyTaskName’.");
});
}
}
Uwaga zastrzeżeniem
Kiedy go nie używać. Możesz spojrzeć na zaplanowane zadanie jako prostą, nigdy nie kończącą się sagę . Ale gdy tylko twoje zadanie zacznie dostawać pewną logikę (instrukcje if/switch), powinieneś rozważyć przejście do sagi.
Wow! Dzięki za ten wpis – frictionlesspulley
To działało dla mnie ... przez jakiś czas. Pewnego dnia nie udało się produkcji, harmonogram został wyłączony na 2 dni, mimo że reszta autobusu nadal działała. Nie zarejestrowano żadnych komunikatów o błędach NSB. Więc teraz szukam w zamian Quartz.NET. Podobno jest to znany problem ... http://stackoverflow.com/q/23732174/61697 – demoncodemonkey
@demoncodemonkey znany problem, który został naprawiony https://github.com/Particular/NServiceBus/issues/2133. ale kwarc.NET jest całkowicie poprawną alternatywą. – Simon
Uwaga: Ta odpowiedź była ważna dla wersji NServiceBus w wersji 2.0, ale nie jest już poprawna. Wersja 3 ma tę funkcjonalność. Idź przeczytaj odpowiedź Simona, jest ważna dla wersji 3!
NServiceBus nie ma wbudowanego systemu planowania. Jest to (na bardzo prostym poziomie) procesor wiadomości.
Możesz utworzyć klasę, która implementuje IWantToRunAtStartup (metody Run i Stop), a następnie stwórz timer lub wykonaj dowolną logikę, którą musisz zrobić, aby w określonym czasie przesyłać wiadomości do magistrali.
Inni użytkownicy użyli Quartz.NET razem z NServiceBus, aby uzyskać bardziej szczegółową funkcję planowania.
Użyłem Quartz do planowania innych usług, dopóki nie zaczęliśmy używać NServiceBus do przesyłania wiadomości. Po raz pierwszy dostałem potrzebę zaplanowania rzeczy po tym, jak nasz harmonogram kwarcowy przestał działać. – frictionlesspulley
Użyłem Quartz, aby uruchomić zadanie co godzinę, a zadanie właśnie opublikowało wydarzenie ... Usługa wykorzystała metody Run & Stop w IWantToRunAtStartup. Oto dobry początek http://stuartcullinan.blogspot.com/2010/12 /building-nservicebus-timeout-manager.html, btw, sprawdź [NServiceBusContrib] (https://github.com/nservicebus/nservicebus-contrib) – Sarmaad
Uwaga ta odpowiedź nie jest już poprawna – Simon
- 1. Jak zaplanować uruchamianie zadania w okresowych odstępach czasu?
- 2. Długie uruchamianie zadania w ApiControllerze (przy użyciu WebAPI, selfhosted OWIN)
- 3. Jak zaplanować zapytanie MySQL?
- 4. Uruchamianie zadania maven zainstalować
- 5. Uruchamianie mkvirtualenv przy użyciu ansible
- 6. Uruchamianie zadania Cron
- 7. Uruchamianie zadania po wszystkie zadania zostały zakończone
- 8. Tworzenie tylko jeden dziennik codziennie przy użyciu Ruby standardowego Logger
- 9. Rx i zadania - anulować uruchamianie zadania po utworzeniu nowego zadania?
- 10. Ponowne uruchamianie zdalnych ziaren przy użyciu IPython.parallel
- 11. uruchamianie poleceń w cmd przy użyciu C#
- 12. Uruchamianie kolejnych zadań w kilku środowiskach przy użyciu Jenkinsa
- 13. Uruchamianie zadania przy przepływie powietrza na podstawie zgłoszenia internetowego
- 14. Wykonywanie procedury składowanej przy użyciu zadania Windows Scheduler
- 15. Uruchamianie akcji programu Photoshop przy użyciu kodu
- 16. Automatyczne uruchamianie testów przy użyciu capistrano
- 17. Uruchamianie zestawu testów JUnit przy użyciu Maven
- 18. Uruchamianie szablonu T4 przy użyciu C#
- 19. Jak uruchomić skrypt PHP przy użyciu zadania harmonogramu systemu Windows?
- 20. Jak zaplanować procedurę składowaną?
- 21. Uruchamianie zadania Laravel w określonym czasie
- 22. Django i Seler: Jak zaplanować zadanie, które będzie uruchamiane tylko raz przy użyciu Selera (podobne do polecenia "at" w Linuksie)?
- 23. Uruchamianie zadania Hadoop bez pliku wyjściowego
- 24. Uruchamianie zadania firebaseUploadReleaseProguardMapping z pliku app/build.gradle
- 25. F # przy użyciu Async.Parallel do uruchomienia 2 zadania równolegle
- 26. Django - Jak uruchomić funkcję CODZIENNIE?
- 27. Jak zaplanować zadanie w Tomcat
- 28. Uruchamianie pliku wsadowego w danym katalogu przy użyciu VBA
- 29. Jak tymczasowo pominąć uruchamianie zadania kompilacji w niestandardowym poleceniu sbt?
- 30. Nie automatycznego tworzenia kolejki NServiceBus
Używamy tej metody i działa dobrze. Jakie przetwarzanie robisz? Zamiast tego możesz potrzebować sagi. –
Próbuję użyć tej samej metody. Jednak nie jestem w stanie wymyślić, jak uzyskać odniesienie do magistrali w realizacji harmonogramu. – frictionlesspulley
Zabawny Miałem ten sam problem. W końcu zapytałem kontener o wystąpienie magistrali jawnie: IBus bus = Configure.Instance.Builder.Build() ;. Jeśli to odpowie na to pytanie, zmienię i opublikuję jako odpowiedź. –