/// <summary> /// 广播/发布消息 ExchangeType = Fanout,忽略 RoutingKey 路由规则 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="messager"></param> /// <param name="exchange"></param> /// <param name="body"></param> /// <param name="properties"></param> public static void Fanout <T>(this IRabbitMessager messager, string exchange, [NotNull] T body, IBasicProperties properties = null) where T : class { byte[] bytes = messager.Serializer.Serialize(body); messager.Publish(exchange, ExchangeType.Fanout, string.Empty, bytes, properties); }
/// <summary> /// 订阅/消费消息 /// </summary> /// <typeparam name="T">泛型 T</typeparam> /// <param name="messager"></param> /// <param name="queueName"></param> /// <param name="func"></param> public static void Subscribe <T>(this IRabbitMessager messager, string queueName, Action <T> func) where T : class => messager.Subscribe(queueName, bytes => func(messager.Serializer.Deserialize <T>(bytes.ToArray())));
/// <summary> /// 广播/发布消息 ExchangeType = Fanout,忽略 RoutingKey 路由规则 /// </summary> /// <param name="messager"></param> /// <param name="exchange"></param> /// <param name="body"></param> /// <param name="properties"></param> public static void Fanout(this IRabbitMessager messager, string exchange, string body, IBasicProperties properties = null) => messager.Publish(exchange, ExchangeType.Fanout, string.Empty, Encoding.UTF8.GetBytes(body), properties);
/// <summary> /// 订阅/消费消息 /// </summary> /// <param name="messager"></param> /// <param name="queueName"></param> /// <param name="func"></param> public static void Subscribe(this IRabbitMessager messager, string queueName, Action <string> func) => messager.Subscribe(queueName, bytes => func(Encoding.UTF8.GetString(bytes.ToArray())));
/// <summary> /// 发布消息 - 采用自定义名称交换机 ExchangeType = Direct /// </summary> /// <typeparam name="T">泛型 T</typeparam> /// <param name="messager"></param> /// <param name="exchange"></param> /// <param name="routingKey"></param> /// <param name="body"></param> /// <param name="properties"></param> public static void Publish <T>(this IRabbitMessager messager, string exchange, string routingKey, [NotNull] T body, IBasicProperties properties = null) where T : class { byte[] bytes = messager.Serializer.Serialize(body); messager.Publish(exchange, ExchangeType.Direct, routingKey, bytes, properties); }
/// <summary> /// 发布消息 - 采用默认交换机 ExchangeType = Direct /// </summary> /// <typeparam name="T">泛型 T</typeparam> /// <param name="messager"></param> /// <param name="routingKey"></param> /// <param name="body"></param> /// <param name="properties"></param> public static void Publish <T>(this IRabbitMessager messager, string routingKey, [NotNull] T body, IBasicProperties properties = null) where T : class => Publish(messager, string.Empty, routingKey, body, properties);
/// <summary> /// 发布消息 - 采用自定义名称交换机 ExchangeType = Direct /// </summary> /// <param name="messager"></param> /// <param name="exchange"></param> /// <param name="routingKey"></param> /// <param name="body"></param> /// <param name="properties"></param> public static void Publish(this IRabbitMessager messager, string exchange, string routingKey, string body, IBasicProperties properties = null) => messager.Publish(exchange, ExchangeType.Direct, routingKey, Encoding.UTF8.GetBytes(body), properties);
/// <summary> /// 发布消息 - 采用默认交换机 ExchangeType = Direct /// </summary> /// <param name="messager"></param> /// <param name="routingKey"></param> /// <param name="body"></param> /// <param name="properties"></param> public static void Publish(this IRabbitMessager messager, string routingKey, string body, IBasicProperties properties = null) => Publish(messager, string.Empty, routingKey, body, properties);