2012-02-21 8 views
2

私のWebプロセスはドメインにコマンドを送信し、イベントを処理します(SIgnalRをブラウザにプッシュするため)。 IIS Express/Win7 x64上でASP.NET MVC3と.NET 4を実行していますWebアプリケーションがイベントを購読していますが、処理していません

ランダムに、そして時には最初から正しく、イベントをハンドラに配信しないようにします。イベントはWebエンドポイントのジャーナル・キューにありますが、それ以外のトレースはありません。それらはログから完全に欠落しています。ハンドラ内のブレークポイントは決して命中しません。また、エンドポイントとエラーキューの両方が空です。

 Func<Type, bool> isMessage = t => typeof(IMessage).IsAssignableFrom(t); 
     Func<Type, bool> isCommand = t => typeof(ICommand).IsAssignableFrom(t); 
     Func<Type, bool> isEvent = t => typeof(IEvent).IsAssignableFrom(t); 


     Configure.WithWeb() 
      .NinjectBuilder(Kernel) 
      .DefineEndpointName("Hospital.Web") 
      .DefiningMessagesAs(isMessage) 
      .DefiningCommandsAs(isCommand) 
      .DefiningEventsAs(isEvent) 
      .Log4Net() 
      .JsonSerializer() 
      .MsmqTransport() 
      .UnicastBus() 
      .LoadMessageHandlers() 
      .PurgeOnStartup(true) 
      .CreateBus() 
      .Start(); 

ここに私のweb.configのNSBの部分だ:私はasked this question in the NServiceBus groupもしました

public class StatsHandler : 
    IHandleMessages<PatientAdmitted>, 
    IHandleMessages<BedAssigned>, 
    IHandleMessages<PatientDischarged> 
{ 

    private static readonly ILog Log = LogManager.GetLogger(typeof (StatsHandler)); 

    private readonly IConnectionManager _connectionManager; 

    public StatsHandler(IConnectionManager connectionManager) 
    { 
     _connectionManager = connectionManager; 
    } 

    protected dynamic Clients 
    { 
     get { return _connectionManager.GetClients<StatsHub>(); } 
    } 


    public void Handle(PatientAdmitted message) 
    { 
     Log.DebugFormat("Admitted {0} {1}", message.FirstName, message.LastName); 
     Clients.patientAdmitted(); 
    } 

    public void Handle(BedAssigned message) 
    { 
     Log.DebugFormat("Assigned {0} to {1}", message.PatientId, message.Bed); 
     Clients.bedAssigned(); 
    } 

    public void Handle(PatientDischarged message) 
    { 
     Log.DebugFormat("Discharged {0}", message.PatientId); 
     Clients.patientDischarged(); 
    } 
} 

<MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" /> 
<UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="Hospital.Commands" Endpoint="Hospital.CommandHandlers" /> 
     <add Messages="Hospital.Events" Endpoint="Hospital.CommandHandlers" /> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

は、ここに私のハンドラの1つです。そのメッセージにログファイルが添付されています。

答えて

3

RC4にこのような問題が発生している可能性があるバグがありました。RC5を試してみてください。

+0

ありがとうございました。私は今夜​​それを試してみましょう。 –

+0

それはそれを修正しました。ありがとう! –

関連する問題