예제 #1
0
 /// <summary>
 /// 添加交换机监听
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="exchange"></param>
 /// <param name="queue"></param>
 /// <param name="onMessageRecieved"></param>
 /// <returns></returns>
 public static IRabbitConsumerBuilder AddListener(this IRabbitConsumerBuilder builder, string exchange, string queue, Action <RecieveResult> onMessageRecieved)
 {
     return(builder.AddListener(exchange, queue, (_, result) =>
     {
         onMessageRecieved?.Invoke(result);
     }));
 }
예제 #2
0
        /// <summary>
        /// 添加自定义监听
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="exchange"></param>
        /// <param name="queue"></param>
        /// <param name="listenerType"></param>
        /// <returns></returns>
        public static IRabbitConsumerBuilder AddListener(this IRabbitConsumerBuilder builder, string exchange, string queue, Type listenerType)
        {
            if (!typeof(IRabbitConsumerListener).IsAssignableFrom(listenerType) || !listenerType.IsClass || listenerType.IsAbstract)
            {
                throw new ArgumentException($"the listener type must be implement IRabbitConsumerListener and none abstract class", "listenerType");
            }

            builder.Services.AddTransient(listenerType);
            return(builder.AddListener(exchange, queue, (serviceProvider, result) =>
            {
                var listenner = serviceProvider.GetService(listenerType) as IRabbitConsumerListener;
                listenner.ConsumeAsync(result).Wait();
            }));
        }
예제 #3
0
 /// <summary>
 /// 添加自定义监听
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="builder"></param>
 /// <param name="exchange"></param>
 /// <param name="queue"></param>
 /// <returns></returns>
 public static IRabbitConsumerBuilder AddListener <T>(this IRabbitConsumerBuilder builder, string exchange, string queue) where T : class, IRabbitConsumerListener
 {
     return(builder.AddListener(exchange, queue, typeof(T)));
 }