Singleton NServiceBus Saga

时间:2015-12-22 01:51:25

标签: c# nservicebus saga

单个传奇处理所有消息的正确方法是什么?

我认为我不能指定一些message-to-saga相关性。我可以吗?我相信这会导致“未找到传奇”错误。

一种天真的方式是在传奇中拥有一些常量ID,但这似乎是错误的。

class SomePolicy :
    Saga<SomePolicy.State>,
    IAmStartedByMessages<SomeEvent>
{
    internal class State : ContainSagaData
    {
        public int Id { get { return 1; } }
    }

    protected override void ConfigureHowToFindSaga(SagaPropertyMapper<State> mapper)
    {
        mapper
            .ConfigureMapping<SomeEvent>(message => message.MagicConstant)
            .ToSaga(saga => saga.Id);
    }

    public void Handle(SomeEvent message)
    {
        // Modify the saga state here.
    }
}

1 个答案:

答案 0 :(得分:2)

您可以提供 Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:154) at android.app.AlertDialog$Builder.<init>(AlertDialog.java:379) at com.raccoonfinger.salad.RecipeListFragment.connectionerror(RecipeListFragment.java:381) at com.raccoonfinger.salad.RecipeListFragment$getrecipe.onPostExecute(RecipeListFragment.java:335) at com.raccoonfinger.salad.RecipeListFragment$getrecipe.onPostExecute(RecipeListFragment.java:296) at android.os.AsyncTask.finish(AsyncTask.java:632) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5312) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 的实现,而不是覆盖ConfigureHowToFindSaga,用于从类型为M的消息中查找类型为T的传奇。然后让它始终返回相同的实例。 / p>

有关详细信息和一些示例,请参阅Complex Saga Finding Logic