2021年2月7日星期日

hangfire 实现已完成的job设置过期,防止数据无限增长

背景

后台作业hangfire用来在后台里执行应用里的一些任务,后台作业是持久性的这意味着即使你的应用程序崩溃了, 后台作业也会在稍后重试并执行。平常我们一般是将数据持久化到存储介质,比如redis。这时候就会带来一个问题,如何防止数据无限扩大,我们可以已完成的job设置过期,防止数据无限增长。

解决方法

1、定义SucceededStateExpireHandler ,继承IStateHandler。

using Hangfire.States;using Hangfire.Storage;using System;namespace CompanyName.ProjectName.Hangfire.Job.Code{ /// <summary> /// 已完成的job设置过期,防止数据无限增长 /// </summary> public class SucceededStateExpireHandler : IStateHandler {  public TimeSpan JobExpirationTimeout;  public SucceededStateExpireHandler(int jobExpirationTimeout)  {   JobExpirationTimeout = TimeSpan.FromMinutes(jobExpirationTimeout);  }  public string StateName => SucceededState.StateName;  public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)  {   context.JobExpirationTimeout = JobExpirationTimeout;  }  public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)  {  } }}

2、设置过期时间。

 JobExpirationTimeout = TimeSpan.FromMinutes(jobExpirationTimeout);

3、在ConfigureServices进行添加启用。

public IServiceProvider ConfigureServices(IServiceCollection services){..........................GlobalStateHandlers.Handlers.Add(new SucceededStateExpireHandler(int.Parse(Configuration["Hangfire:JobExpirationTimeout"])));}

总结

1、做数据的过期设置还是很有必要的,尤其是大数据量的情况下,可以有效的节约资源,提高速度。

2、对于有效期的时长,就要看自己的业务需要了。









原文转载:http://www.shaoqun.com/a/536579.html

跨境电商:https://www.ikjzd.com/

乐宝:https://www.ikjzd.com/w/2200

c2c:https://www.ikjzd.com/w/1576


背景后台作业hangfire用来在后台里执行应用里的一些任务,后台作业是持久性的这意味着即使你的应用程序崩溃了,后台作业也会在稍后重试并执行。平常我们一般是将数据持久化到存储介质,比如redis。这时候就会带来一个问题,如何防止数据无限扩大,我们可以已完成的job设置过期,防止数据无限增长。解决方法1、定义SucceededStateExpireHandler,继承IStateHandler。us
东杰智能:东杰智能
c88:c88
Spredfast:Spredfast
聚合跨境:聚合跨境
亚马逊Alexa再放大招,继"罢工"后再上高潮!:亚马逊Alexa再放大招,继"罢工"后再上高潮!

没有评论:

发表评论

跨境电商资讯:外贸宣传平台有哪些(出口的

现在很多做外贸的人都非常关注 外贸企业怎么推广 ,而现在推广的途径和平台有很多,企业如果都做,成本和时间精力是一个问题,而且并不是所有的推广渠道都是有用的。今天云程网络就来为大家盘点几个有效的外贸推广渠道。 一、海外社交媒体营销 Facebook,领英等海外社交媒体营销在近几年得...