@@ -142,8 +142,7 @@ public static IServiceCollection AddMessageHandlerSingleton<T>(this IServiceColl
142142 services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
143143 return services ;
144144 }
145-
146-
145+
147146 /// <summary>
148147 /// Add transient async message handler.
149148 /// </summary>
@@ -207,5 +206,133 @@ public static IServiceCollection AddAsyncMessageHandlerSingleton<T>(this IServic
207206 services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
208207 return services ;
209208 }
209+
210+ /// <summary>
211+ /// Add transient non-cyclic message handler.
212+ /// </summary>
213+ /// <typeparam name="T">Message handler type.</typeparam>
214+ /// <param name="services">Service collection.</param>
215+ /// <param name="routingKey">Routing key.</param>
216+ /// <returns>Service collection.</returns>
217+ public static IServiceCollection AddNonCyclicMessageHandlerTransient < T > ( this IServiceCollection services , string routingKey )
218+ where T : class , INonCyclicMessageHandler
219+ {
220+ services . AddTransient < INonCyclicMessageHandler , T > ( ) ;
221+ var router = new MessageHandlerRouter { Type = typeof ( T ) , RoutingKeys = new [ ] { routingKey } . ToList ( ) } ;
222+ services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
223+ return services ;
224+ }
225+
226+ /// <summary>
227+ /// Add transient non-cyclic message handler.
228+ /// </summary>
229+ /// <typeparam name="T">Message handler type.</typeparam>
230+ /// <param name="services">Service collection.</param>
231+ /// <param name="routingKeys">Routing keys.</param>
232+ /// <returns>Service collection.</returns>
233+ public static IServiceCollection AddNonCyclicMessageHandlerTransient < T > ( this IServiceCollection services , IEnumerable < string > routingKeys )
234+ where T : class , INonCyclicMessageHandler
235+ {
236+ services . AddTransient < INonCyclicMessageHandler , T > ( ) ;
237+ var router = new MessageHandlerRouter { Type = typeof ( T ) , RoutingKeys = routingKeys . ToList ( ) } ;
238+ services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
239+ return services ;
240+ }
241+
242+ /// <summary>
243+ /// Add singleton non-cyclic message handler.
244+ /// </summary>
245+ /// <typeparam name="T">Message handler type.</typeparam>
246+ /// <param name="services">Service collection.</param>
247+ /// <param name="routingKey">Routing key.</param>
248+ /// <returns>Service collection.</returns>
249+ public static IServiceCollection AddNonCyclicMessageHandlerSingleton < T > ( this IServiceCollection services , string routingKey )
250+ where T : class , INonCyclicMessageHandler
251+ {
252+ services . AddSingleton < INonCyclicMessageHandler , T > ( ) ;
253+ var router = new MessageHandlerRouter { Type = typeof ( T ) , RoutingKeys = new [ ] { routingKey } . ToList ( ) } ;
254+ services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
255+ return services ;
256+ }
257+
258+ /// <summary>
259+ /// Add singleton non-cyclic message handler.
260+ /// </summary>
261+ /// <typeparam name="T">Message handler type.</typeparam>
262+ /// <param name="services">Service collection.</param>
263+ /// <param name="routingKeys">Routing keys.</param>
264+ /// <returns>Service collection.</returns>
265+ public static IServiceCollection AddNonCyclicMessageHandlerSingleton < T > ( this IServiceCollection services , IEnumerable < string > routingKeys )
266+ where T : class , INonCyclicMessageHandler
267+ {
268+ services . AddSingleton < INonCyclicMessageHandler , T > ( ) ;
269+ var router = new MessageHandlerRouter { Type = typeof ( T ) , RoutingKeys = routingKeys . ToList ( ) } ;
270+ services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
271+ return services ;
272+ }
273+
274+ /// <summary>
275+ /// Add transient async non-cyclic message handler.
276+ /// </summary>
277+ /// <typeparam name="T">Message handler type.</typeparam>
278+ /// <param name="services">Service collection.</param>
279+ /// <param name="routingKey">Routing key.</param>
280+ /// <returns>Service collection.</returns>
281+ public static IServiceCollection AddAsyncNonCyclicMessageHandlerTransient < T > ( this IServiceCollection services , string routingKey )
282+ where T : class , IAsyncNonCyclicMessageHandler
283+ {
284+ services . AddTransient < IAsyncNonCyclicMessageHandler , T > ( ) ;
285+ var router = new MessageHandlerRouter { Type = typeof ( T ) , RoutingKeys = new [ ] { routingKey } . ToList ( ) } ;
286+ services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
287+ return services ;
288+ }
289+
290+ /// <summary>
291+ /// Add transient async non-cyclic message handler.
292+ /// </summary>
293+ /// <typeparam name="T">Message handler type.</typeparam>
294+ /// <param name="services">Service collection.</param>
295+ /// <param name="routingKeys">Routing keys.</param>
296+ /// <returns>Service collection.</returns>
297+ public static IServiceCollection AddAsyncNonCyclicMessageHandlerTransient < T > ( this IServiceCollection services , IEnumerable < string > routingKeys )
298+ where T : class , IAsyncNonCyclicMessageHandler
299+ {
300+ services . AddTransient < IAsyncNonCyclicMessageHandler , T > ( ) ;
301+ var router = new MessageHandlerRouter { Type = typeof ( T ) , RoutingKeys = routingKeys . ToList ( ) } ;
302+ services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
303+ return services ;
304+ }
305+
306+ /// <summary>
307+ /// Add singleton async non-cyclic message handler.
308+ /// </summary>
309+ /// <typeparam name="T">Message handler type.</typeparam>
310+ /// <param name="services">Service collection.</param>
311+ /// <param name="routingKey">Routing key.</param>
312+ /// <returns>Service collection.</returns>
313+ public static IServiceCollection AddAsyncNonCyclicMessageHandlerSingleton < T > ( this IServiceCollection services , string routingKey )
314+ where T : class , IAsyncNonCyclicMessageHandler
315+ {
316+ services . AddSingleton < IAsyncNonCyclicMessageHandler , T > ( ) ;
317+ var router = new MessageHandlerRouter { Type = typeof ( T ) , RoutingKeys = new [ ] { routingKey } . ToList ( ) } ;
318+ services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
319+ return services ;
320+ }
321+
322+ /// <summary>
323+ /// Add singleton async non-cyclic message handler.
324+ /// </summary>
325+ /// <typeparam name="T">Message handler type.</typeparam>
326+ /// <param name="services">Service collection.</param>
327+ /// <param name="routingKeys">Routing keys.</param>
328+ /// <returns>Service collection.</returns>
329+ public static IServiceCollection AddAsyncNonCyclicMessageHandlerSingleton < T > ( this IServiceCollection services , IEnumerable < string > routingKeys )
330+ where T : class , IAsyncNonCyclicMessageHandler
331+ {
332+ services . AddSingleton < IAsyncNonCyclicMessageHandler , T > ( ) ;
333+ var router = new MessageHandlerRouter { Type = typeof ( T ) , RoutingKeys = routingKeys . ToList ( ) } ;
334+ services . Add ( new ServiceDescriptor ( typeof ( MessageHandlerRouter ) , router ) ) ;
335+ return services ;
336+ }
210337 }
211338}
0 commit comments