using DotNetCore.CAP.Messages; using AdminService.Tasks; namespace AdminHost.Extension { public static class CapExtension { public static IServiceCollection AddCap(this IServiceCollection services, IConfiguration configuration) { services.AddCap(x => { x.UseDashboard(); x.UseRabbitMQ(rb => { rb.HostName = configuration["CapConfig:Host"]; rb.UserName = configuration["CapConfig:UserName"]; rb.Password = configuration["CapConfig:Password"]; rb.VirtualHost = configuration["CapConfig:VirtualHost"]; rb.ExchangeName = "cap.exchange"; }); x.UsePostgreSql(op => { op.ConnectionString = configuration["CapConfig:PGLogHost"]; op.Schema = "public"; }); x.SucceedMessageExpiredAfter = 7 * 24 * 3600; x.FailedRetryCount = 5; x.FailedRetryInterval = 10; x.FailedThresholdCallback = ObjFailedThresholdCallback; }); return services; } private static async void ObjFailedThresholdCallback(FailedInfo failed) { var exception = failed.Message.Headers["cap-exception"] ?? string.Empty; var name = failed.Message.GetName(); if (failed.MessageType == MessageType.Publish) { } else { } } } }