订阅者未读取事件消息
本文关键字:事件 消息 读取 | 更新日期: 2023-09-27 18:09:10
我有一个建立在NServiceBus上的小服务,用来监听其他地方发生的特定事件。端点配置类如下所示:
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
public void Init()
{
var container = new WindsorContainer();
try
{
SetLoggingLibrary.Log4Net(() => XmlConfigurator.Configure());
Configure.Serialization.Xml();
Configure.Features.Enable<Sagas>();
Configure.With()
.CastleWindsorBuilder(container)
.DefiningCommandsAs(t =>
t.GetCustomAttributes(typeof(CustomCommandAttribute), false)
.GetLength(0) > 0)
.DefiningEventsAs(t =>
t.GetCustomAttributes(typeof(CustomEventAttribute), false)
.GetLength(0) > 0)
.Log4Net()
.UseNHibernateTimeoutPersister()
.UseNHibernateSagaPersister()
;
}
catch (Exception ex)
{
throw new Exception("Configuration did not work. " + Environment.NewLine +
string.Format("Config file: {0}", AppDomain.CurrentDomain.SetupInformation.ConfigurationFile) +
Environment.NewLine +
ex.Message, ex);
}
//More stuff adding other non-NSB facilities into the container.
//Pretty certain it's not relevant here, but if people think it is it can be added
}
}
服务包含一个处理一个事件的处理程序-事件类本身用CustomEventAttribute
属性装饰,其他订阅已经构建为订阅同一发布者和同一事件。一切都很好。
服务启动,我可以在发布者的订阅数据库中看到一个条目:
SubscriberEndpoint MessageType Version TypeName
----------------------------------- -------------------------------------- ------------- ---------------------------
MySubscriber@MySubscribersMachine Namespaces.PrincipalAdded,1.1.3.37147 1.1.3.37147 Namespaces.PrincipalAdded
在此之后,发布者发布了4条这种类型的消息,并且我可以看到MySubscribersMachine
上的MySubscriber
队列中有4条消息。然后——什么也没发生。
我们的log4net配置将NServiceBus记录为DEBUG
级别-所以我看到,例如,这个相同的服务每分钟轮询NSB超时-但我没有看到任何关于它的信息,甚至尝试消费这些消息并调用处理程序。
在这一点上我能做些什么来获得更好的诊断信息?
NServiceBus的版本是4.3。服务器为Windows Server 2008 R2
显然,如果服务运行的用户帐户没有访问其自己队列的权限,那么不值得在日志中发送任何内容。
我们已经给帐户权限从队列中读取,现在它运行正常。