The .NET Task Parallel Library has great facilities for managing asynchronous work. You can check for status, capture exceptions, schedule continuations, etc. However, this all occurs in memory. Is there any way in .NET to use the TPL (or something like it) in a persistent way such that this can be tracked across process restarts/in a distributed system? In my case, my "tasks" are (potentially long-running) HTTP requests to remote application servers. Unlike with many job systems, my tasks are determined on-the-fly as the application runs, hence the appeal of a system like the TPL instead of a more static system like Jenkins/Hudson.
Asked
Active
Viewed 90 times
3
-
2Sounds to me like you're after a persistent message queue rather than something like the TPL. Or something like Quartz.NET for task scheduling. The queue options are many: MSMQ, RabbitMQ, etc. – Simon Whitehead Oct 23 '14 at 22:03
-
@SimonWhitehead do message queues provide functionality around completion, cancellation, continuations, etc. like Tasks or are they just a data store? Do you know of any articles or docs describing using one of these technologies for a TPL-like system? – ChaseMedallion Oct 24 '14 at 18:06
-
Different queues provide different fearure sets... so I can't speak for all of them. MSMQ though is purely a persistence mechanism with extra features like distributed transactions. Any cancellation and processing of tasks based on whats in the queue are your responsibility. – Simon Whitehead Oct 24 '14 at 22:22