的Web应用程序订阅事件,但不处理它们
问题描述:
我的Web程序发送命令到域,并处理事件(通过SIgnalR推到浏览器)。它是在IIS快递/ Win7的X64的Web应用程序订阅事件,但不处理它们
在随机运行ASP.NET MVC3和.NET 4,有时从一开始就正确的,它决定停止分发事件处理我。这些事件位于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部分:
<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>
这里是我的处理程序之一:
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();
}
}
我也asked this question in the NServiceBus group。该消息附有一个日志文件。
答
有在RC4一个错误,可能导致此行为,你可以尝试RC5并看看是否有帮助?
感谢安德烈亚斯。我今晚会试一试。 – 2012-02-22 15:04:23
修复了它。谢谢! – 2012-02-23 15:35:41