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