首页 文章

NServiceBus 6.2使用RabbitMQ丢失消息

提问于
浏览
0

我正在使用NSB版本6.2和RabbitMQ版本4.我正在使用RabbitMQTransport . 我的RabbitMQ服务器位于Azure中的虚拟机中 . 当我发送消息时,有时我会丢失消息而没有任何错误 .

这是我的NService Bus配置 .

EndpointConfiguration config = null;
        string endpointName = ConfigurationManager.AppSettings.Get("NServiceBus.EndpointName");
        config = configEndPoint.IsNullOrDefault() ? new EndpointConfiguration(endpointName) : configEndPoint;
        int maximumConcurrencyLevel = ConfigurationManager.AppSettings.Get("NServiceBus.TransportConfig.MaximumConcurrencyLevel").ToInt();
        config.LimitMessageProcessingConcurrencyTo(maximumConcurrencyLevel);
        int numberOfRetries = ConfigurationManager.AppSettings.Get("NServiceBus.TransportConfig.NumberOfRetries").ToInt();
        var recoverability = config.Recoverability();
        recoverability.Immediate(
            customizations: immediate =>
            {
                immediate.NumberOfRetries(numberOfRetries);
            });

        DefaultFactory defaultFactory = LogManager.Use<DefaultFactory>();
        defaultFactory.Directory(this.DatabusDirectory);
        defaultFactory.Level(LogLevel.Error);

        config.IdealinkJsonSerializer();
        config.UsePersistence<InMemoryPersistence>();

        config.SendFailedMessagesTo("error");
        config.AuditProcessedMessagesTo("audit");

        // configure transport
        config.UseTransport<RabbitMQTransport>().Transactions(TransportTransactionMode.ReceiveOnly);
         var endpointInstance = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();

1 回答

  • 4

    使用exception of persistence可以很好地配置 endpoints . 持久性用于本机不支持底层传输的功能 . 对于RabbitMQ,没有本机机制来发送延迟消息 . 直到版本4.3持久性用于存储超时 . 如果使用InMemoryPersistence,则在 endpoints 重新启动后将不会保留任何信息 . Recoverability feature, specifically delayed retries需要超时 . From version 4.3 and above,超时不需要持久性,但仍不应使用 InMemoryPersistence . 您可以根据手头的技术和场景选择other persistences .

    请注意,版本4.0.0不在supported versions下 . 您应该更新到4.3.x或4.4.x并验证行为以查看是否发现了邮件丢失 . 如果您仍然丢失消息,我建议提供更多详细信息,例如日志文件和处理程序代码 . 如果你不能公开分享,submit a support case .

    希望有所帮助 .

相关问题