55 lines
1.7 KiB
C#
55 lines
1.7 KiB
C#
using DotNetCore.CAP.Messages;
|
|
|
|
namespace FishGameHost.Extension
|
|
{
|
|
public static class CapExtension
|
|
{
|
|
public static IServiceCollection AddCap(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
services.AddCap(x =>
|
|
{
|
|
var instanceId = Environment.GetEnvironmentVariable("INSTANCE_ID") ?? "default";
|
|
x.DefaultGroupName = $"FishGameHost-{instanceId}";
|
|
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
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|