Nservicebus 来自端点的Web服务集成

Nservicebus 来自端点的Web服务集成,nservicebus,Nservicebus,我需要将第三方Web服务集成到基于消息传递的体系结构中。我们正在使用NServiceBus 根据NServiceBus上的PluralSight课程,建议在集成WebService时,为该集成创建特定的WebService网关端点 第三方Web服务具有用于下拉通知和确认这些通知的API方法。此Web服务的客户端需要定期(例如每15分钟)提取通知,并在正确处理这些通知时确认每个通知 建议的流量如下: NServiceBus WebService网关端点将根据通知的类型提取通知并向另一个NServi

我需要将第三方Web服务集成到基于消息传递的体系结构中。我们正在使用NServiceBus

根据NServiceBus上的PluralSight课程,建议在集成WebService时,为该集成创建特定的WebService网关端点

第三方Web服务具有用于下拉通知和确认这些通知的API方法。此Web服务的客户端需要定期(例如每15分钟)提取通知,并在正确处理这些通知时确认每个通知

建议的流量如下:

  • NServiceBus WebService网关端点将根据通知的类型提取通知并向另一个NServiceBus端点发送消息。例如:“新客户通知”意味着向另一个NServiceBus端点发送新客户消息。“客户更新”通知意味着发送客户更新消息等
  • 一旦消息被传递到另一个端点,我们就必须通过WebService API调用向第三方确认通知。这里的想法是向同一个NServiceBus网关端点(self)发送一条“确认”消息,并让消息处理程序接收该消息 见下图:

    我的问题是:

  • 将确认消息从一个端点发送到同一个端点是否属于设计风格。(自我)
  • 我们希望在Azure中托管消息传递基础架构。当网关端点需要一个worker角色时,有关于如何承载端点的提示吗?worker角色会定期提取通知?是否可以将所有端点托管在一个Azure云服务中,还是将每个端点托管在它自己的云服务中更好 干杯

    问题第一部分 我不认为这是一种代码气味。我自己也做过几次。这是确保与依赖项的交互成功发生的可靠方法

    我会依靠事件驱动的确认。这将允许您的软件中有更多的可扩展点。例如:
    CreateCustomer
    命令将发布
    CustomerCreated
    事件
    UpdateCustomer
    命令将发布
    CustomerUpdated
    事件

    您可以让一个处理程序通用地处理这两个事件,并提交一个acknolwedgement
    AckHandler:IHandle,IHandle

    但要回顾一下您的实际问题,我不认为这是一种代码气味。


    问题第二部分 (下次我建议一起创建一个单独的问题)

    至于在Azure中托管,我可能倾向于在WebJob中托管它们。WebApp只是一个托管平台,可以托管一个网站和一系列webjob。它们有点便宜,控制少,但非常容易扩展

    请记住,在需要水平扩展之前,可以通过调整每个主机的并发设置来垂直扩展,以找到它可以处理的线程数量(NSB<5表示最多20个线程;NSB>=6表示100个线程)

    你可以一开始就把它们放在一个主机上。

    问题第1部分 我不认为这是一种代码气味。我自己也做过几次。这是确保与依赖项的交互成功发生的可靠方法

    我会依靠事件驱动的确认。这将允许您的软件中有更多的可扩展点。例如:
    CreateCustomer
    命令将发布
    CustomerCreated
    事件
    UpdateCustomer
    命令将发布
    CustomerUpdated
    事件

    您可以让一个处理程序通用地处理这两个事件,并提交一个acknolwedgement
    AckHandler:IHandle,IHandle

    但要回顾一下您的实际问题,我不认为这是一种代码气味。


    问题第二部分 (下次我建议一起创建一个单独的问题)

    至于在Azure中托管,我可能倾向于在WebJob中托管它们。WebApp只是一个托管平台,可以托管一个网站和一系列webjob。它们有点便宜,控制少,但非常容易扩展

    请记住,在需要水平扩展之前,可以通过调整每个主机的并发设置来垂直扩展,以找到它可以处理的线程数量(NSB<5表示最多20个线程;NSB>=6表示100个线程)

    你可以一开始就把它们都放在一个主机上。

    至于第二季度,请看一看,至于第二季度,请看和