NServiceBus Distributor - 如何拆分应用程序

2024-01-10

我们有 1 个服务,它从数据库中选择一些 id,然后用一些业务逻辑按顺序处理它们。我们希望横向扩展并并行执行处理,而不创建大量内部线程。

我的问题是:

如果我想使用Distributor进行横向扩展,应该如何做?

解决方案一:该服务分为 2 部分:

  1. 原来的服务修改为只从数据库中选择id,然后将其发送给worker。这将是分发器 (RunDistributorWithNoWorkerOnItsEndpoint)。
  2. 一项新服务将保存业务逻辑并作为工作人员运行,处理每个传入的 ID。如果我想要更多的工人,我只需多次启动相同的过程即可。

解决方案2:该服务分为3部分:

  1. 原来的服务修改为只从数据库中选择ids,然后将其发送给分发者。
  2. 新服务分发器 (RunDistributorWithNoWorkerOnItsEndpoint) 仅处理工作线程的负载平衡。
  3. 一个新的服务,worker(s),它将保存业务逻辑并处理每个传入的 id。

解决方案3:该服务分为 2 部分:

  1. 原来的服务修改为只从数据库中选择id然后发送。作为发送者运行。
  2. 一项新服务将保留业务逻辑并作为工作人员运行和经销商,处理每个传入的 ID 或分发它们。

解决方案 1 对我来说很有意义,但使用它意味着经销商将承担 2 项责任:

  1. 选择 ID。
  2. 将 id 分发给工人。

但当我查看 NSB 文档中的 ScaleOut 示例时,我不确定这是否可能,甚至可能是反模式。

在再次阅读文档和 ScaleOut 示例后,我相信我应该选择解决方案 3,但我还不太确定。

我试图通过与 NSB 分销商进行扩展来解决管道问题,我更愿意自己进行托管,而不是使用 NServiceBus.Host.exe,但这不是严格要求。

EDIT:我最终使用了解决方案 3,因为它的优点(在我看来)是,如果您使用默认队列命名,配置队列的任务比解决方案 2 中的要小。

亲切的问候


我们在过去的版本中使用解决方案 2 完成了此操作。原因是我们使分发服务器保持一致且高度可用。将来我们很可能会让分销商完成一些工作,否则它只会相对闲置。这个解决方案对我们很有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NServiceBus Distributor - 如何拆分应用程序 的相关文章

  • 使用 nservicebus 延迟消息

    我正在处理 nServiceBus 我想在失败时重试并在另一时间发送一条消息 我听说过 Bus Defer 但我对它的理解有限 我有一个检查股票代码的系统 它会检查命令何时被调用 并在晚上 8 点之后重新安排另一次检查 我有 CheckCu
  • 在 Web 应用程序 Application_Start 方法中初始化 NServiceBus 时出现 NullReferenceException

    我正在运行 NServiceBus 2 0 RTM 当我的 MessageModule 将 CurrentSessionContext 绑定到我的 NHibernate sessionfactory 时 我收到 NullReferenceE
  • NServiceBus:指定消息顺序

    我在它自己的进程中使用 NServiceBus 所以not使用通用主机 我希望按特定顺序为一条消息提供多个消息处理程序 对于通用主机 您将实施ISpecifyMessageHandlerOrdering 但我不知道在托管您自己的 NServ
  • NServiceBus.Host - 如何将端点实例添加到我的 IoC 容器

    我正在尝试将解决方案从 NServiceBus 5 升级到 6 目前 我们正在将 IBus 注入到服务类中 以便服务可以根据需要向总线发送消息 现在 IBus 在 6 中不再可用 当使用 NServiceBus Host 创建端点时 如何注
  • 在哪里引发持久性相关的域事件 - 服务、存储库或 UI?

    我的 ASP NET MVC3 NHibernate 应用程序需要触发和处理与我的域对象相关的各种事件 例如 一个Order对象可能有类似的事件OrderStatusChanged or NoteCreatedForOrder 在大多数情况
  • NServiceBus 到底是一个 ESB

    NServiceBus 到底是 ESB 还是轻量级 ESB 或者它更像是具有持久 可靠消息传递的 WCF 在我看来 它更像是一个消息传递框架 而不是 ESB 只是想要一些指导 因为我刚刚开始研究不同的 ESB 产品以及它们能够做什么或不能做
  • 带有消息队列的任务处理状态

    我正在开发一个产品数据导入系统 该系统从外部源下载产品数据 将其转换为正确的模式 并存储结果 本质上是一个 ETL 系统 系统处理的核心消息类型是 ImportProductCommand 它指定要导入的产品和来源 然而 导入命令很少单独发
  • 将 NServiceBus 与 Asp.Net MVC 2 结合使用

    有没有办法将 NServiceBus 与 Asp Net MVC 2 一起使用 我想将请求消息从 Asp Net MVC2 应用程序发送到服务 该服务处理该消息并回复响应消息 有没有办法清楚地做到这一点 NServiceBus 仅支持注册状
  • 是什么导致 EventStore 这么容易抛出 ConcurrencyException?

    Using JOliver活动商店 http github com joliver EventStore3 0 并且刚刚开始使用简单的示例 我有一个使用 NServiceBus 的简单发布 订阅 CQRS 实现 客户端在总线上发送命令 域服
  • NServiceBus Bus.Send().Register(callback) 不适用于 IIS/Windows Server 2008

    我已经为这个问题苦苦挣扎了几天 但我似乎无法弄清楚 我有一个托管在 IIS 和 Windows Server 2008 R2 上的简单 WCF Web 服务 Web Service的实现如下 var completionResult new
  • NServiceBus 警告“找不到消息类型的处理程序”

    我是 NServiceBus 的新手 正在尝试开发一个发布者和单独的订阅者 我使用的是 v3 2 0 0 到目前为止 它工作正常 发布者和订阅者都在 NServiceBus 主机中运行 我的消息全部发布正常 但订阅者间歇性地无法接收它们 发
  • 分配器和工作线程端点队列在同一台机器上

    我正在使用 NServiceBus 3 2 2 0 尝试在同一台机器上测试分配器和工作人员 我注意到经销商正在创建以下队列 端点队列 EndPointQueue distributor control EndPointQueue distr
  • 什么是服务总线?我什么时候需要服务总线?

    我听说过关于N服务总线 http particular net nservicebus 但我还没有真正理解它是什么 他们声称自己是 最流行的 net 开源服务总线 什么是服务总线 我什么时候需要服务总线 您可以将服务总线视为 SOA 面向服
  • 使用 BizTalk 代替 NServiceBus 或 MassTransit 的优点/缺点

    我很好奇它是否考虑使用 BizTalk 来实现 pub sub 消息传递架构 基本上我真正需要的就是你可以使用 NServiceBus 或 MassTransit 做的事情 我的经理倾向于坚持使用直接从 Microsoft 提供的框架 因此
  • 如何处理nservicebus中的消息顺序?

    我试图找到一种按照发送者发送消息的顺序处理消息的方法 因为 NServiceBus 不保证消息将以特定顺序处理 发送者是一个订单系统 它发布 createOrder 和 reviseOrder 命令 发送者允许用户向同一订单提交多个修订 因
  • NServiceBus升级到3.3.8版本后出现WebException错误404

    我刚刚将 NServiceBus 解决方案更新到版本 3 3 8 我之前的版本是3 2 2 当我运行我的解决方案时 我收到以下错误 发生Web异常 远程服务器返回错误 404 未找到 发生 System Net WebException H
  • 使用领域驱动设计的node.js

    我正在将应用程序从 C 迁移到 Node js 我一边学习一边学习node js 所以我是一个node js 新手 我正在阅读 领域驱动设计的模式 原则和实践 一书 发现我当前的项目可以从中受益的很多重要信息 例如 书中有一个示例电子商务应
  • MessageQueueException (0x80004005):对消息队列系统的访问被拒绝

    我有一个现有的应用程序 可以在 Windows 2003 服务器上正常运行 我已将其移至 Windows 2008r2 当应用程序尝试访问队列时 出现以下错误 我的应用程序池的 Indentity 用户可以完全控制我的消息队列 有谁对如何解
  • 使用 NServiceBus FileShareDataBus 时清理文件

    我在 NServiceBus 3 中使用 FileShareDataBus 是否支持清理数据总线文件 如果不是 实现此目的的最佳实践是什么 例如如何确保该文件不是错误队列中消息的一部分 鉴于不可能知道消息在错误队列中停留多长时间 我通常会在
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验

随机推荐

  • 如何解析命令行参数?

    我想解析 perl 脚本中的参数列表 例如我有这种情况 script pl h 127 0 0 1 u user p pass arg1 arg2 arg3 我该如何解析数组中不是选项的参数列表以及标量值中的选项参数 Thanks 好吧 如
  • 升级 3.0.3 -> 3.2.2 后,NServiceBus 端点寻找 RavenDB 超时

    使用 NuGet 我将项目中的所有 NServiceBus 引用从 3 0 3 升级到 3 2 2 对于此解决方案中的 4 个服务 我还为它们提供了对 NuGet 中的 NServiceBus Host 的引用 我将二进制文件部署到测试环境
  • formik中的submit Form、handleSubmit、onSubmit有什么区别?

    福米克医生说 https jaredpalmer com formik docs guides form submission https jaredpalmer com formik docs guides form submission
  • 从 Roslyn 方法调用中的相应参数获取方法参数的名称

    我想知道是否有一些现有的逻辑可以通过查看该特定方法 构造函数的调用来获取有关其包含的方法 构造函数签名中的参数定义的名称 或任何其他相关信息 基本上 我只是希望能够获得一个变量的默认名称 该名称将作为参数传递给调用 因此 如果一个方法定义如
  • Flexbox 使用align-items: flex-start 和align-content: center

    再会 我正在尝试使用 Flex 框在横轴上包含多余空间的 Flex 容器中强制执行以下行为 如果所有弹性项目都适合一行 那么它们应该在横轴的顶部对齐 但 一旦它们包裹起来 柔性项目应该凝结在横轴的中心 为此 我尝试了以下标记https js
  • 如何构建知识图谱?

    我用 PageRank 制作了一个可以在我的计算机上运行的小型搜索引擎的原型 我有兴趣在其之上构建一个知识图 它应该只返回在正确上下文中的查询网页 类似于谷歌如何找到搜索问题的相关答案 我看到了很多关于知识图的宣传 但没有很多文献 而且几乎
  • WPF 拖放和数据类型

    如何获取掉落物体的类型 如何将其添加到特定的结构 列表中 假设您控制拖动的开始 您不是从另一个应用程序拖动 则类型取决于您 只需使源代码和目标代码匹配即可 在拖动中 通常是 MouseMove 或 MouseDown 处理程序 var dr
  • 删除向量向量内的重复向量

    我有一个向量的向量 loops 其中包含整数值 一些内部向量是重复的 但它们的元素顺序不同 现在 我想获得一个向量的向量 而没有任何重复的内部向量 这是我的 vec 的一个例子 循环 9 18 26 11 9 9 11 26 18 9 9
  • 检查单个字符是否为空格?

    检查单个字符是否为空格的最佳方法是什么 我知道如何通过正则表达式检查这一点 但如果我只有一个角色 我不确定这是否是最好的方法 是否有更好的方法 关于性能 来检查它是否是空格 如果我做这样的事情 我猜我会想念像制表符这样的空白 if ch 如
  • 良好的图库引擎

    最好的开源图片库引擎是什么 既可以独立使用 也可以适用于 Wordpress 或 Drupal 等现有框架 希望随着时间的推移 我们可以在这里建立一个好的列表 Gallery http gallery menalto com是经典的选择 它
  • 网站在 Ipad/Iphone 模拟器与真实设备上的显示不同

    我搜索过很多iPad iPhone simulators 测试了我的网站 网站在几乎所有模拟器上看起来都不错 但是当我在真实的 iPad 中打开网站时 一切都出了问题 由于我无法在设备上检查等 因此很难知道出了问题并且无法进行相应调整 对此
  • 无法进行单元测试:$_SESSION 在每次测试运行之前清空

    我无法对我的代码进行单元测试 每次运行下一个测试时 SESSION 都会清除 当我运行 testStartProductSession 时 我的对象向 SESSION 变量添加一些数据 但是当我运行下一个测试方法 testSessionId
  • C# 中使用 Powershell 远程调用的内存泄漏

    我有一个 Windows 服务正在执行大量交换远程调用以获取一些服务器信息 我注意到 只要时间过去 服务使用的内存就会开始增长 直到引发内存异常 我已经搜索过 看起来有一个已知的内存泄漏System Management Automatio
  • Ektron 中的 FormBlock 服务器控制

    我正在使用 Ektron 8 6 我的模板页面中有一个 FormBlock 服务器控件 它具有工作区中有效 HTML 表单的 DefualutFormID 工作区中的表单有几个表单字段及其相应的值 当模板页面呈现时 我需要获取这些表单字段值
  • 无法移走或删除现有目标 C:\androidSDK\sdk\tools

    我无法更新 sdk 工具 我不知道为什么 如果使用此命令 sdkmanager update 或 android update sdk 它会给我类似标题的错误 Warning An error occured during installa
  • 如何在没有电视的情况下测试 Chromecast 应用?

    背景 我计划制作一个将内容 网址 内容 投射到 chromecast 的应用程序 我买了一个 ChromeCast 加密狗 使用 Google 的示例效果很好 问题 开发此类应用程序时要同时查看 3 个屏幕是相当烦人的 而且我更希望接收器也
  • TabControl 中的轨迹栏背景

    我在 TabControl 内的 TabPage 上有一个 TrackBar 控件 TrackBar 的背景绘制为灰色 而 TabPage 的背景绘制为白色 无法将 TrackBar 的 BackColor 属性设置为透明 并且我无法覆盖绘
  • 如何将 KML 层中的所有字段/扩展数据(不仅仅是“名称”和“描述”)加载到 R 中

    我一直致力于将 KML 文件加载到 R 中 以使用 Leaflet Shiny 制作网络地图 导入非常简单 使用此示例 KML https developers google com kml documentation KML Sample
  • GMP mpf_add 失去精度。我的数字去哪儿了?

    我对两个负浮点数求和 char lhs 2234 6016114467412141 char rhs 4939600281397002 2812 根据 Perl 的说法 使用 bignum 和 Math BigFloat 答案是 49396
  • NServiceBus Distributor - 如何拆分应用程序

    我们有 1 个服务 它从数据库中选择一些 id 然后用一些业务逻辑按顺序处理它们 我们希望横向扩展并并行执行处理 而不创建大量内部线程 我的问题是 如果我想使用Distributor进行横向扩展 应该如何做 解决方案一 该服务分为 2 部分