Hangfire: рдиреМрдХрд░реА рдХреЛ рд╡рд┐рдлрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╡рд░реНрддреА рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХреИрд╕реЗ рдЫреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЬреБрд▓ре░ 2017  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: HangfireIO/Hangfire

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реВрдХреНрд╖реНрдо рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ DisableConcurrentExecution(timeout:0) (0 рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрджрд┐ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (рдпрд╣ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ)ред

рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ "рдЫреЛрдбрд╝реЗ рдЧрдП" рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ failed рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ SkipConcurrentExecutionAttribute рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рд▓рдЧрднрдЧ DisableConcurrentExecutionAttribute рд╕рдорд╛рди рд╣реЛрдЧрд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХрд┐ рдпрд╣ рд▓реЙрдХ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрд╢рд┐рд╢/рдкрдХрдбрд╝ рд▓реЗрдЧрд╛, рдФрд░ DistributedLockTimeoutException рдирд┐рдЧрд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдиреМрдХрд░реА рдХреЛ DeletedState рд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛ред

рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ GetResource() рдирд┐рдЬреА рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд╣реИрдВред
$"{job.Type.ToGenericTypeString()}.{job.Method.Name}" рдЧреИрд░-рд╡рд┐рд░реЛрдзреА рд╡рд┐рддрд░рд┐рдд рд▓реЙрдХ рдирд╛рдо рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ lib рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдиреМрдХрд░реА рдХреЗ рд╡рд┐рддрд░рд┐рдд рд▓реЙрдХ рдирд╛рдо рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ?

cf., https://discuss.hangfire.io/t/disableconcurentexecution-for-job-groups/1389/4

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@dgaspar , рдЖрдк рдЖрд╡рд░реНрддреА рдЬреЙрдм рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдЕрдЧрд▓реА рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдиреМрдХрд░реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдкрд┐рдЫрд▓рд╛ рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдХреГрдкрдпрд╛ рдпрд╣ рд╕рд╛рд░ рджреЗрдЦреЗрдВ: https://gist.github.com/odinserj/a6ad7ba6686076c9b9b2e03fcf6bf74eред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ filterContext.BackgroundJob.Job.ToString() рдЖрдВрддрд░рд┐рдХ TypeExtensions.cs рдФрд░ DisableConcurrentExecutionAttribute.cs (рдкреБрдирдГ) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрдЧрд╛ ... рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

@dgaspar , рдЖрдк рдЖрд╡рд░реНрддреА рдЬреЙрдм рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдЕрдЧрд▓реА рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдиреМрдХрд░реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдкрд┐рдЫрд▓рд╛ рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдХреГрдкрдпрд╛ рдпрд╣ рд╕рд╛рд░ рджреЗрдЦреЗрдВ: https://gist.github.com/odinserj/a6ad7ba6686076c9b9b2e03fcf6bf74eред

@odinserj рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрджрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ "рдЪрд▓ рд░рд╣реА" рдкрдВрдХреНрддрд┐ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд╣реЗрдЧреАред рдХреНрдпрд╛ рдпрд╣ рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реЗрдбреНрдпреВрд▓ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рдирд╣реАрдВ рджреЗрддрд╛? рдпрд╛ рдХреНрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдкреНрддрд┐/рд╕рдлрд╛рдИ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ? (рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореИрдВ new SqlServerStorageOptions { SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5) } рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ)

рдЬрдм рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рд╕рдВрджреЗрд╢ рдХрддрд╛рд░реЗрдВ рд▓реЗрди-рджреЗрди рд╡рд╛рд▓реА рд╣реЛрддреА рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд╛рд▓реЗ, рдЕрдиреНрдп рднрдВрдбрд╛рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрд╕реА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

pwueje picture pwueje  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vikramjb picture vikramjb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fb5000 picture fb5000  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

odinserj picture odinserj  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jeffsugden picture jeffsugden  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ