Skip to content
This repository was archived by the owner on Apr 29, 2022. It is now read-only.

Commit d754322

Browse files
Separated message handler's DI extensions class
1 parent c23ee2f commit d754322

18 files changed

+737
-685
lines changed
Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using RabbitMQ.Client.Core.DependencyInjection.Extensions;
5+
6+
namespace RabbitMQ.Client.Core.DependencyInjection
7+
{
8+
/// <summary>
9+
/// DI extensions for async message handlers.
10+
/// </summary>
11+
public static class AsyncMessageHandlerDependencyInjectionExtensions
12+
{
13+
/// <summary>
14+
/// Add a transient async message handler.
15+
/// </summary>
16+
/// <typeparam name="T">Message handler type.</typeparam>
17+
/// <param name="services">Service collection.</param>
18+
/// <param name="routePattern">Route pattern.</param>
19+
/// <returns>Service collection.</returns>
20+
public static IServiceCollection AddAsyncMessageHandlerTransient<T>(this IServiceCollection services, string routePattern)
21+
where T : class, IAsyncMessageHandler =>
22+
services.AddInstanceTransient<IAsyncMessageHandler, T>(new[] { routePattern }.ToList(), 0);
23+
24+
/// <summary>
25+
/// Add a transient async message handler.
26+
/// </summary>
27+
/// <typeparam name="T">Message handler type.</typeparam>
28+
/// <param name="services">Service collection.</param>
29+
/// <param name="routePatterns">Route patterns.</param>
30+
/// <returns>Service collection.</returns>
31+
public static IServiceCollection AddAsyncMessageHandlerTransient<T>(this IServiceCollection services, IEnumerable<string> routePatterns)
32+
where T : class, IAsyncMessageHandler =>
33+
services.AddInstanceTransient<IAsyncMessageHandler, T>(routePatterns.ToList(), 0);
34+
35+
/// <summary>
36+
/// Add a transient async message handler.
37+
/// </summary>
38+
/// <typeparam name="T">Message handler type.</typeparam>
39+
/// <param name="services">Service collection.</param>
40+
/// <param name="routePattern">Route pattern.</param>
41+
/// <param name="order">Message handler order.</param>
42+
/// <returns>Service collection.</returns>
43+
public static IServiceCollection AddAsyncMessageHandlerTransient<T>(this IServiceCollection services, string routePattern, int order)
44+
where T : class, IAsyncMessageHandler =>
45+
services.AddInstanceTransient<IAsyncMessageHandler, T>(new[] { routePattern }.ToList(), order);
46+
47+
/// <summary>
48+
/// Add a transient async message handler.
49+
/// </summary>
50+
/// <typeparam name="T">Message handler type.</typeparam>
51+
/// <param name="services">Service collection.</param>
52+
/// <param name="routePatterns">Route patterns.</param>
53+
/// <param name="order">Message handler order.</param>
54+
/// <returns>Service collection.</returns>
55+
public static IServiceCollection AddAsyncMessageHandlerTransient<T>(this IServiceCollection services, IEnumerable<string> routePatterns, int order)
56+
where T : class, IAsyncMessageHandler =>
57+
services.AddInstanceTransient<IAsyncMessageHandler, T>(routePatterns.ToList(), order);
58+
59+
/// <summary>
60+
/// Add a singleton async message handler.
61+
/// </summary>
62+
/// <typeparam name="T">Message handler type.</typeparam>
63+
/// <param name="services">Service collection.</param>
64+
/// <param name="routePattern">Route pattern.</param>
65+
/// <returns>Service collection.</returns>
66+
public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServiceCollection services, string routePattern)
67+
where T : class, IAsyncMessageHandler =>
68+
services.AddInstanceSingleton<IAsyncMessageHandler, T>(new[] { routePattern }.ToList(), 0);
69+
70+
/// <summary>
71+
/// Add a singleton async message handler.
72+
/// </summary>
73+
/// <typeparam name="T">Message handler type.</typeparam>
74+
/// <param name="services">Service collection.</param>
75+
/// <param name="routePatterns">Route patterns.</param>
76+
/// <returns>Service collection.</returns>
77+
public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServiceCollection services, IEnumerable<string> routePatterns)
78+
where T : class, IAsyncMessageHandler =>
79+
services.AddInstanceSingleton<IAsyncMessageHandler, T>(routePatterns.ToList(), 0);
80+
81+
/// <summary>
82+
/// Add a singleton async message handler.
83+
/// </summary>
84+
/// <typeparam name="T">Message handler type.</typeparam>
85+
/// <param name="services">Service collection.</param>
86+
/// <param name="routePattern">Route pattern.</param>
87+
/// <param name="order">Message handler order.</param>
88+
/// <returns>Service collection.</returns>
89+
public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServiceCollection services, string routePattern, int order)
90+
where T : class, IAsyncMessageHandler =>
91+
services.AddInstanceSingleton<IAsyncMessageHandler, T>(new[] { routePattern }.ToList(), order);
92+
93+
/// <summary>
94+
/// Add a singleton async message handler.
95+
/// </summary>
96+
/// <typeparam name="T">Message handler type.</typeparam>
97+
/// <param name="services">Service collection.</param>
98+
/// <param name="routePatterns">Route patterns.</param>
99+
/// <param name="order">Message handler order.</param>
100+
/// <returns>Service collection.</returns>
101+
public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServiceCollection services, IEnumerable<string> routePatterns, int order)
102+
where T : class, IAsyncMessageHandler =>
103+
services.AddInstanceSingleton<IAsyncMessageHandler, T>(routePatterns.ToList(), order);
104+
105+
/// <summary>
106+
/// Add a transient async message handler.
107+
/// </summary>
108+
/// <typeparam name="T">Message handler type.</typeparam>
109+
/// <param name="services">Service collection.</param>
110+
/// <param name="routePattern">Route pattern.</param>
111+
/// <param name="exchange">An exchange which will be "listened".</param>
112+
/// <returns>Service collection.</returns>
113+
public static IServiceCollection AddAsyncMessageHandlerTransient<T>(this IServiceCollection services, string routePattern, string exchange)
114+
where T : class, IAsyncMessageHandler =>
115+
services.AddInstanceTransient<IAsyncMessageHandler, T>(new[] { routePattern }.ToList(), exchange, 0);
116+
117+
/// <summary>
118+
/// Add a transient async message handler.
119+
/// </summary>
120+
/// <typeparam name="T">Message handler type.</typeparam>
121+
/// <param name="services">Service collection.</param>
122+
/// <param name="routePatterns">Route patterns.</param>
123+
/// <param name="exchange">An exchange which will be "listened".</param>
124+
/// <returns>Service collection.</returns>
125+
public static IServiceCollection AddAsyncMessageHandlerTransient<T>(this IServiceCollection services, IEnumerable<string> routePatterns, string exchange)
126+
where T : class, IAsyncMessageHandler =>
127+
services.AddInstanceTransient<IAsyncMessageHandler, T>(routePatterns.ToList(), exchange, 0);
128+
129+
/// <summary>
130+
/// Add a transient async message handler.
131+
/// </summary>
132+
/// <typeparam name="T">Message handler type.</typeparam>
133+
/// <param name="services">Service collection.</param>
134+
/// <param name="routePattern">Route pattern.</param>
135+
/// <param name="exchange">An exchange which will be "listened".</param>
136+
/// <param name="order">Message handler order.</param>
137+
/// <returns>Service collection.</returns>
138+
public static IServiceCollection AddAsyncMessageHandlerTransient<T>(this IServiceCollection services, string routePattern, string exchange, int order)
139+
where T : class, IAsyncMessageHandler =>
140+
services.AddInstanceTransient<IAsyncMessageHandler, T>(new[] { routePattern }.ToList(), exchange, order);
141+
142+
/// <summary>
143+
/// Add a transient async message handler.
144+
/// </summary>
145+
/// <typeparam name="T">Message handler type.</typeparam>
146+
/// <param name="services">Service collection.</param>
147+
/// <param name="routePatterns">Route patterns.</param>
148+
/// <param name="exchange">An exchange which will be "listened".</param>
149+
/// <param name="order">Message handler order.</param>
150+
/// <returns>Service collection.</returns>
151+
public static IServiceCollection AddAsyncMessageHandlerTransient<T>(this IServiceCollection services, IEnumerable<string> routePatterns, string exchange, int order)
152+
where T : class, IAsyncMessageHandler =>
153+
services.AddInstanceTransient<IAsyncMessageHandler, T>(routePatterns.ToList(), exchange, order);
154+
155+
/// <summary>
156+
/// Add a singleton async message handler.
157+
/// </summary>
158+
/// <typeparam name="T">Message handler type.</typeparam>
159+
/// <param name="services">Service collection.</param>
160+
/// <param name="routePattern">Route pattern.</param>
161+
/// <param name="exchange">An exchange which will be "listened".</param>
162+
/// <returns>Service collection.</returns>
163+
public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServiceCollection services, string routePattern, string exchange)
164+
where T : class, IAsyncMessageHandler =>
165+
services.AddInstanceSingleton<IAsyncMessageHandler, T>(new[] { routePattern }.ToList(), exchange, 0);
166+
167+
/// <summary>
168+
/// Add a singleton async message handler.
169+
/// </summary>
170+
/// <typeparam name="T">Message handler type.</typeparam>
171+
/// <param name="services">Service collection.</param>
172+
/// <param name="routePatterns">Route patterns.</param>
173+
/// <param name="exchange">An exchange which will be "listened".</param>
174+
/// <returns>Service collection.</returns>
175+
public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServiceCollection services, IEnumerable<string> routePatterns, string exchange)
176+
where T : class, IAsyncMessageHandler =>
177+
services.AddInstanceSingleton<IAsyncMessageHandler, T>(routePatterns.ToList(), exchange, 0);
178+
179+
/// <summary>
180+
/// Add a singleton async message handler.
181+
/// </summary>
182+
/// <typeparam name="T">Message handler type.</typeparam>
183+
/// <param name="services">Service collection.</param>
184+
/// <param name="routePattern">Route pattern.</param>
185+
/// <param name="exchange">An exchange which will be "listened".</param>
186+
/// <param name="order">Message handler order.</param>
187+
/// <returns>Service collection.</returns>
188+
public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServiceCollection services, string routePattern, string exchange, int order)
189+
where T : class, IAsyncMessageHandler =>
190+
services.AddInstanceSingleton<IAsyncMessageHandler, T>(new[] { routePattern }.ToList(), exchange, order);
191+
192+
/// <summary>
193+
/// Add a singleton async message handler.
194+
/// </summary>
195+
/// <typeparam name="T">Message handler type.</typeparam>
196+
/// <param name="services">Service collection.</param>
197+
/// <param name="routePatterns">Route patterns.</param>
198+
/// <param name="exchange">An exchange which will be "listened".</param>
199+
/// <param name="order">Message handler order.</param>
200+
/// <returns>Service collection.</returns>
201+
public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServiceCollection services, IEnumerable<string> routePatterns, string exchange, int order)
202+
where T : class, IAsyncMessageHandler =>
203+
services.AddInstanceSingleton<IAsyncMessageHandler, T>(routePatterns.ToList(), exchange, order);
204+
}
205+
}

0 commit comments

Comments
 (0)