NServiceBus处理程序的成员是否可以安全地存储与消息相关(而不是相关)的数据?

时间:2010-10-07 18:23:56

标签: nservicebus

处理程序是否会重复使用以继续发送其他消息?

public abstract class SomeHandler : IHandleMessages<MyEvent>
{
    public IBus Bus { get; set; }
    public String Message { get; set; }

    public void Handle(T message)
    {
        Message = "Test";
        SomeInstanceMethod();
    }

    public void SomeInstanceMethod()
    {
        if (Message = ...) // Can i use Message here?
            return;
    }
}

1 个答案:

答案 0 :(得分:2)

默认情况下,消息处理程序配置为ComponentCallModelEnum.Singlecall,这意味着组件上的每个调用都将在新实例上执行。

因此,两个消息将由该类的不同实例处理,并且不能共享状态。

但是,您在此处设置了一个类属性,然后在类中检索另一个检索该属性的方法。那会很好。但是,在我看来,这有点令人困惑,如果这就是你所追求的,你可能最好将值作为参数传递给另一个方法。