n服务总线加载双订阅

本文关键字:加载 服务 总线 | 更新日期: 2023-09-27 18:36:44

我的ICommand处理程序被调用了两次!
我在 IIS 中自托管 nservicebus(并使用卡西尼号进行调试)。

        Configure.ScaleOut(_ => _.UseSingleBrokerQueue());
        Configure.With()
            .AutofacBuilder(container)
            .InMemorySubscriptionStorage()
            .UseInMemoryTimeoutPersister()                
            .UseTransport<SqlServer>("myconnectionstring")
            .UnicastBus()
            .PurgeOnStartup(true)
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install());

以下是启动后 SQL Server [audit] 表中的消息标头,同一事件处理程序有两个订阅

我在使用 ICommand 处理程序时遇到了同样的问题,因为它被调用了两次以响应bus.Send(new CommandInstance())

{"NServiceBus.MessageId":"2a02a10c-9e97-4bc7-9fe9-a26100912bc5","NServiceBus.CorrelationId":"2a02a10c-9e97-4bc7-9fe9-a26100912bc5","NServiceBus.OriginatingEndpoint":"Aureus.Web","NServiceBus.OriginatingMachine":"ARWEN","NServiceBus.MessageIntent":"Subscribe","NServiceBus.ControlMessage":"True","SubscriptionMessageType":"Aureus.Messages.Invoicing.IBalanceCapturedEvent, Aureus.Messages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","WinIdName":"PALANTIR''Craig","NServiceBus.Version":"4.0.0","NServiceBus.TimeSent":"2013-10-24 06:48:33:086263 Z","NServiceBus.ConversationId":"fcef12be-9904-4fd3-9807-a26100912bc6","NServiceBus.ProcessingEndpoint":"Aureus.Web","NServiceBus.ProcessingMachine":"ARWEN","NServiceBus.ProcessingStarted":"2013-10-24 06:48:33:419799 Z","NServiceBus.ProcessingEnded":"2013-10-24 06:48:33:425799 Z","NServiceBus.OriginatingAddress":"Aureus.Web"}
{"NServiceBus.MessageId":"3c8d0bdd-4951-44af-aff7-a26100912bc5","NServiceBus.CorrelationId":"3c8d0bdd-4951-44af-aff7-a26100912bc5","NServiceBus.OriginatingEndpoint":"Aureus.Web","NServiceBus.OriginatingMachine":"ARWEN","NServiceBus.MessageIntent":"Subscribe","NServiceBus.ControlMessage":"True","SubscriptionMessageType":"Aureus.Messages.Invoicing.IBalanceCapturedEvent, Aureus.Messages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","WinIdName":"PALANTIR''Craig","NServiceBus.Version":"4.0.0","NServiceBus.TimeSent":"2013-10-24 06:48:33:176271 Z","NServiceBus.ConversationId":"5c47ca76-b2ea-4108-836e-a26100912be1","NServiceBus.ProcessingEndpoint":"Aureus.Web","NServiceBus.ProcessingMachine":"ARWEN","NServiceBus.ProcessingStarted":"2013-10-24 06:48:33:440801 Z","NServiceBus.ProcessingEnded":"2013-10-24 06:48:33:440801 Z","NServiceBus.OriginatingAddress":"Aureus.Web"}

我有一个用于程序集中特定命令的命令处理程序。它被叫了两次。

该事件被调用两次

/// <summary>
/// The balance captured handler.
/// </summary>
public class BalanceCapturedEvt : IHandleMessages<IBalanceCapturedEvent>
{
     ...
}

n服务总线加载双订阅

我的结论是,NServiceBus在自托管时效果不佳。我还没有找到补救措施,不得不得出结论,这是不可能的。