gpt4 book ai didi

c# - NServiceBus - 基于内容的路由和审计 - 我的方法可以吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:32 24 4
gpt4 key购买 nike

在设计我们系统中的消息流时,我很难决定采用哪种方式。

由于我们业务流程的易变性(即计算运费),我们使用工作流框架来动态更改流程。

一般过程应该是这样的workflow handling process
该接口(interface)是一种服务,它通过客户提供的任何接口(interface)(web 服务、tcp 端点、数据库轮询、文件,随便你怎么说)连接到客户系统。然后将包含接收到的数据和要执行的工作流 ID 的命令发送到执行器。

第一个问题出现在我们想要在多个工作服务上分配负载的地方。
假设我们有不同的流程,例如打印包裹标签、计算价格、发送通知邮件。打印标签应该永远不会因为执行了大量的邮寄工作流而被延迟。因此,我们希望能够根据他们所做的工作将命令路由到不同的工作人员。

因为所有命令都像“执行工作流 XY”,所以我们需要实现我们自己的基于内容的路由。 NServicebus 不支持开箱即用,大多数时候是因为它是一种反模式。

当您无法使用不同的消息类型来路由消息时,是否有更好的方法来做到这一点?

第二个问题出现在我们想要添加监控的时候。因为端点只能为每种消息类型订阅一个队列,所以我们不能让所有执行者只发布一条“我完成了一个工作流”消息。当前的解决方案是将消息Bus.Send 发送到预先配置的审核端点。这对我来说有点像作弊;)

有没有更好的方法将多个worker发布的消息重新合并到一个queue中?如果没有问题 #1,我认为所有工作人员都可以使用相同的输入队列,但是在这种情况下这是不可能的。

最佳答案

您可以尝试让您的路由不是基于内容,而是基于 header ,这应该更容易。您对工作流程是否打印标签不感兴趣,您感兴趣的是此命令是否优先。所以您可以将此信息添加到邮件 header 中...

关于c# - NServiceBus - 基于内容的路由和审计 - 我的方法可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com