【问题标题】:Hangfire - Is there a way to attach additional meta data to jobs when they are created to be able to identify them later?Hangfire - 有没有办法在创建作业时将额外的元数据附加到它们以便以后能够识别它们?
【发布时间】:2021-06-10 01:47:52
【问题描述】:

我希望在 Asp.Net Core 应用程序中实现 Hangfire。

但是,我很难理解如何最好地防止用户创建重复的 Hangfire“即发即弃”作业。

问题

假设用户通过应用创建了一个作业,该作业执行与特定客户端相关的一些处理。该过程可能需要几分钟才能完成。我希望能够防止用户为同一个客户端创建另一个作业,而该客户端的其他作业仍在由 Hangfire 处理(即在任何时候只能有一个特定客户端的处理作业,尽管有几个不同的客户也可以各自处理自己的工作)。

解决方案?

我需要一种方法在创建每个作业时将附加元数据(在本例中为客户端 ID)附加到每个作业,然后我可以使用它来询问当前在 Hangfire 中处理的作业,以查看它们是否相关到有问题的客户 ID。

这似乎是一个基本功能,对这种情况非常有用,但我得出的结论是不支持这样的东西,这让我感到惊讶。

...除非你知道不同。

Hangfire 看起来很棒,我很想使用它,但这对我来说可能是个炫耀。

任何建议都会受到欢迎。

谢谢

【问题讨论】:

    标签: hangfire


    【解决方案1】:

    我需要一种方法来附加额外的元数据(在本例中, 客户 ID)到每个作业,因为它被创建

    可以通过hangfire过滤器来实现向作业添加元数据。 你可以看看这个答案。 https://stackoverflow.com/a/57396553/1236044

    根据您的需要,您可以使用更多过滤器类型。 例如,如果当前正在处理另一个作业,IElectStateFilter 可能有助于过滤掉作业。 如果您有多个处理服务器,您将需要自己的存储解决方案来处理您自己的自定义当前处理/优先级/锁定机制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 2022-01-25
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      相关资源
      最近更新 更多