【问题标题】:Collecting messages收集消息
【发布时间】:2021-09-03 07:48:52
【问题描述】:

我有一个处理程序发布事件的流程。每100个事件我想做一些操作。有什么聪明的方法可以实现吗?我知道我可以编写在单线程主机上运行的处理程序,因此它一次只使用一条消息并防止处理超过 100 条消息。但我想避免仅为这种情况创建单独的主机。您对如何使用 Rebus 有任何想法吗?

【问题讨论】:

    标签: azureservicebus nservicebus saga rebus


    【解决方案1】:

    有什么聪明的方法可以实现吗?

    不,不是真的。或者,更准确地说:我认为有很多方法可以做类似的事情,不同的解决方案会有不同的属性。

    例如您可以使用静态的longInterlocked.Increment(...) 来统计消息并将返回值与% 100 进行比较以确定是否该触发某些事件。

    或者您可以将行插入数据库,然后有一个单独的后台计时器来查询数据库并执行任何需要完成的操作,当表中有 100 行时 - 然后它可以删除这些行或将它们标记为处理。

    所以... Rebus 中没有内置方法,但可能有很多创造性的方法来做到这一点。

    【讨论】:

    • 谢谢,我没想到 Rebus 本身有任何特定的解决方案,而是一些消息模式来处理它。我认为 Interlocked.Increment 的选项在支持重试方面可能很复杂。
    猜你喜欢
    • 2021-04-20
    • 2021-03-31
    • 2020-12-30
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2021-12-11
    • 2019-06-27
    • 2015-07-22
    相关资源
    最近更新 更多