c# - 订户未阅读事件消息

标签 c# msmq nservicebus publish-subscribe

我有一个基于 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。

最佳答案

显然,如果运行该服务的用户帐户无权访问其自己的队列,则不值得向日志中发送任何内容。

我们已授予该帐户从队列中读取的权限,现在它可以正常运行。

关于c# - 订户未阅读事件消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24280774/

相关文章:

SignalR(原始)不向客户端发送消息

nservicebus - 群集故障转移安全 NServiceBus 订阅

c# - .NET Framework 2.0 中集合的替代方案

c# - 如何定期合并可观察对象?

c# - 如何使用 SignalR 从 ASP.NET MVC 3 通知 Web 客户端 MSMQ 任务已完成

c# - 无法使 MSMQ 正常工作

c# - LINQ to Entities 无法识别方法 'System.String get_Item(Int32)' 方法,并且无法将此方法翻译成存储表达式

c# - 如何为 XDocument 设置默认的 XML 命名空间

msmq - 如何在 msmq 上使用 rebus 实现竞争消费者模式

c# - 将 NLog 与 NServiceBus 3 一起使用