PoleReliableMessageServiceCollectionExtensions.cs
3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using Pole.Pole.ReliableMessage.EventBus;
using Pole.ReliableMessage;
using Pole.ReliableMessage.Abstraction;
using Pole.ReliableMessage.EventBus;
using Pole.ReliableMessage.Messaging;
using Pole.ReliableMessage.Messaging.CallBack;
using Pole.ReliableMessage.Processor;
using Pole.ReliableMessage.Utils;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text;
namespace Microsoft.Extensions.DependencyInjection
{
public static class PoleReliableMessageServiceCollectionExtensions
{
public static IServiceCollection AddPoleReliableMessage(this IServiceCollection services, Action<ReliableMessageOption> optionConfig)
{
ReliableMessageOption reliableMessageOption = new ReliableMessageOption();
optionConfig(reliableMessageOption);
foreach(var extension in reliableMessageOption.ReliableMessageOptionExtensions)
{
extension.AddServices(services);
}
services.Configure(optionConfig);
services.AddSingleton<IJsonConverter, DefaultJsonConverter>();
//services.AddSingleton<IMessageBuffer, DefaultMessageBuffer>();
services.AddSingleton<IMessageCheckRetryer, DefaultMessageCheckRetryer>();
services.AddSingleton<IRetryTimeDelayCalculator, DefaultRetryTimeDelayCalculator>();
services.AddSingleton<ITimeHelper, DefaulTimeHelper>();
services.AddSingleton<IApplicationBuilderConfigurator, DefaultApplicationBuilderConfigurator>();
services.AddSingleton<IComteckReliableMessageBootstrap, DefaultComteckReliableMessageBootstrap>();
services.AddSingleton<IMessageCallBackInfoGenerator, DefaultMessageCallBackInfoGenerator>();
services.AddSingleton<IMessageCallBackInfoStore, MessageCallBackInfoInMemoryStore>();
services.AddSingleton<IMessageCallBackRegister, DefaultMessageCallBackRegister>();
services.AddSingleton<IMessageChecker, DefaultMessageChecker>();
services.AddSingleton<IMessageCallBackInfoGenerator, DefaultMessageCallBackInfoGenerator>();
services.AddSingleton<IReliableBus, DefaultReliableBus>();
services.AddSingleton<IReliableEventCallBackFinder, DefaultReliableEventCallBackFinder>();
services.AddSingleton<IReliableEventHandlerFinder, DefaultReliableEventHandlerFinder>();
services.AddSingleton<IMessageTypeIdGenerator, DefaultMessageTypeIdGenerator>();
services.AddSingleton<IServiceIPv4AddressProvider, DefaultServiceIPv4AddressProvider>();
services.AddHostedService<BackgroundServiceBasedProcessorServer>();
services.AddHttpClient();
services.AddSingleton<IProcessor, MessageCleanProcessor>();
services.AddSingleton<IProcessor, PendingMessageCheckProcessor>();
services.AddSingleton<IProcessor, PendingMessageServiceInstanceCheckProcessor>();
var provider = services.BuildServiceProvider();
IComteckReliableMessageBootstrap applicationBuilderConfigurator = provider.GetService(typeof(IComteckReliableMessageBootstrap)) as IComteckReliableMessageBootstrap;
applicationBuilderConfigurator.Initialize(services, reliableMessageOption.EventHandlerAssemblies, reliableMessageOption.EventCallbackAssemblies);
return services;
}
}
}