使用MassTransit时的工作单元

Mou*_*ouk 5 masstransit unit-of-work

我正在寻找一种方法来挂钩消息处理管道,并在消费者完成处理一些消息后做一些工作.我的目的是打开一个新的会话并开始一个事务(可以完成IoC容器),然后再处理它们.

在NServiceBus中,我会使用IMessageModule接口来挂钩.确实有类似的东西吗?实际上处理处理程序也会这样做,但是当我使用StructureMap作为ObjectBuilder时,Release方法什么都不做.

Chr*_*son 12

您可以在使用每条消息之前和之后注册要调用的拦截器.举个例子:

        LocalBus = ServiceBusConfigurator.New(x =>
            {
                x.ReceiveFrom("loopback://localhost/mt_client");

                x.BeforeConsumingMessage(() => { _before.Set(); });
                x.AfterConsumingMessage(() => { _after.Set(); });
            });
Run Code Online (Sandbox Code Playgroud)

查看MassTransit.Tests项目中的MessageInterceptor_Specs.cs文件以获取工作单元测试.