Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由Saga处理两次的单个NServiceBus消息_Nservicebus_Messaging_Saga - Fatal编程技术网

由Saga处理两次的单个NServiceBus消息

由Saga处理两次的单个NServiceBus消息,nservicebus,messaging,saga,Nservicebus,Messaging,Saga,我有一个NServiceBus版本3.3.8的传奇,我正在从NServiceBus 2.6迁移。升级后,我发现队列中的一条消息被saga处理了两次。最奇怪的是,NServiceBus将其视为两条单独的传输消息,因为我的IMessageModule实现也被调用了两次 它接收的消息是绑定到NServiceBus 2.6的消息。以前有人见过这个吗?我起初认为这是一个依赖注入问题,因为我们正在从Unity切换到Autofac,但这似乎不能解释MessageModule被调用两次的问题 我感谢你能提供的任

我有一个NServiceBus版本3.3.8的传奇,我正在从NServiceBus 2.6迁移。升级后,我发现队列中的一条消息被saga处理了两次。最奇怪的是,NServiceBus将其视为两条单独的传输消息,因为我的IMessageModule实现也被调用了两次

它接收的消息是绑定到NServiceBus 2.6的消息。以前有人见过这个吗?我起初认为这是一个依赖注入问题,因为我们正在从Unity切换到Autofac,但这似乎不能解释MessageModule被调用两次的问题

我感谢你能提供的任何帮助

更新


事实证明,这个问题是我无意中创建的依赖项注入问题。saga还有一些需要IBU的附加依赖项,IBU是一个属性,通过属性注入进行设置。使用Autofac模块,我试图通过覆盖AttachToComponentRegistration并在所有注册项上注入属性来简化配置,如下所示:

protected override void AttachToComponentRegistration(IComponentRegistry componentRegistry, IComponentRegistration registration) {
    registration.Activating += (s, e) => e.Context.InjectProperties(e.Instance);
} 
然而,这导致了上述问题。为了修复它,我删除了此覆盖,并通过调用手动设置属性注入:

builder.RegisterType<Implementation>().As<Interface>().PropertiesAutowired(); 
builder.RegisterType<Implementation>().As<Interface>().PropertiesAutowired(); 
builder.RegisterType().As().PropertiesAutowired();

这解决了我的重复处理问题。我仍然不确定它为什么会导致问题,但删除该覆盖确实阻止了重复的消息处理。

事实证明,该问题是我无意中创建的依赖项注入问题。saga还有一些需要IBU的附加依赖项,IBU是一个属性,通过属性注入进行设置。使用Autofac模块,我试图通过覆盖AttachToComponentRegistration并在所有注册项上注入属性来简化配置,如下所示:

    protected override void AttachToComponentRegistration(IComponentRegistry componentRegistry, IComponentRegistration registration) {
        registration.Activating += (s, e) => e.Context.InjectProperties(e.Instance);
    } 
然而,这导致了上述问题。为了修复它,我删除了此覆盖,并通过调用手动设置属性注入:

builder.RegisterType<Implementation>().As<Interface>().PropertiesAutowired(); 
builder.RegisterType<Implementation>().As<Interface>().PropertiesAutowired(); 
builder.RegisterType().As().PropertiesAutowired();

这解决了我的重复处理问题。我仍然不确定它为什么会导致问题,但删除该覆盖确实阻止了重复消息的处理。

我遇到了一个普通处理程序的类似问题,一个容器错误,然后是一个奇怪的重复消息。这到底是怎么回事?