2013-10-24 55 views
0

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

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

下面是在SQL服务器的消息标题[审计]表启动之后,有两个订阅同一事件的处理程序

我与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> 
{ 
    ... 
} 
+0

事件处理程序是否托管在同一端点上(自托管的IIS)? –

+0

是的,它在同一个进程中托管。 – Jim

+0

该命令似乎也会被触发不止一次,即使它是完全不同的界面。 – Jim

回答

1

我的结论必须是NServiceBus不工作以及相当自我主办。 我还没有找到这方面的补救措施,并得出结论,它'不可能。