【问题标题】:Reduce boilerplate code required for Mass Transit减少公共交通所需的样板代码
【发布时间】:2014-10-06 16:10:05
【问题描述】:

我们有一个使用 WCF 构建的系统,我们正在将其转换为使用 Mass Transit 和 RabbitMQ。

因为它是/曾经是 WCF 服务,其操作方式非常 RESTful,因此没有状态或会话。

考虑到这一点,迁移到 Mass Tranist 需要大量样板代码。例如,我们可能有 100 个 WCF 调用。对于每一个,我都必须实现一个单独的Request/Response 对,除了名称之外,它们彼此没有什么不同。显然我什至不能使用继承来抽象出CorrelatedBy<Guid> 语法。

有什么方法可以减少执行此操作所需的样板代码量?

我当前的 MassTransit 代码如下所示:

sbc.Subscribe(subConfig =>
{
    subConfig.Handler<CanAllocateLicensedDeviceRequest>((ctx, req) =>
    {
        bool result = this.licenceActions.CanAllocateLicensedDevice();

        ctx.Respond<CanAllocateLicensedDeviceResponse>(new CanAllocateLicensedDeviceResponse() { Result = result });
    });
}

我了解需要输入请求,但我是否可以没有一个通用的“布尔”返回类型来响应。 Guid 会不会确保它到达正确的位置?

【问题讨论】:

    标签: c# rabbitmq servicebus masstransit


    【解决方案1】:

    您可以使用单一响应类型来避免为每个请求/响应配对创建“ok”响应类型。

    您也不需要使用 CorrelatedBy,因为 RequestId 会在来自请求/响应对话的客户端的 SendRequest 调用中自动为您设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2023-03-18
      • 2020-06-12
      • 1970-01-01
      相关资源
      最近更新 更多