减少Mass Transit所需的样板代码

时间:2014-10-06 16:10:05

标签: c# rabbitmq servicebus masstransit

我们有一个使用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 });
    });
}

我理解需要输入请求,但是我可能没有响应的通用“bool”返回类型。 Guid不会确保它到达正确的地方吗?

1 个答案:

答案 0 :(得分:0)

您可以使用单一响应类型来避免创建&#34;确定&#34;每个请求/响应配对的响应类型。

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