using RabbitMQ.Client; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; namespace Edu.Common.Message { /// /// 消息发送 /// public class MessageHelper { /// /// 获取连接 /// /// 连接配置实体 /// private static ConnectionFactory GetConnectionFactory(RabbitConfig rabbitConfig) { ConnectionFactory factory = new ConnectionFactory { HostName = rabbitConfig.HostName, //默认端口 Port = rabbitConfig.Port, UserName = rabbitConfig.UserName, Password = rabbitConfig.Password, }; return factory; } /// /// 发送信息 /// /// public static void SendMessage(PushMessageModel message) { Int32.TryParse(Common.Config.ReadConfigKey("RabbitMqConfig", subKey: "Port"), out int Port); RabbitConfig rabbitConfig = new RabbitConfig() { HostName = Common.Config.ReadConfigKey("RabbitMqConfig", subKey: "HostName"), Password = Common.Config.ReadConfigKey("RabbitMqConfig", subKey: "Password"), Port = Port, UserName = Common.Config.ReadConfigKey("RabbitMqConfig", subKey: "UserName"), QueenName = Common.Config.ReadConfigKey("RabbitMqConfig", subKey: "QueenName"), }; var obj = new { Id = 0,// 主键 message.Title, message.Content, message.CoverImg, message.CategoryId, message.Platform, message.SendType, message.SendTime, message.ReceiveId, message.JumpUrl, message.CreateByName, message.MsgSign, message.MsgTemplateCode, message.WorkMsgType, Status = 0, CreateTime = DateTime.Now, AppId = Common.Config.PushAppId, IsRead=0, }; Task.Run(() => { try { using (IConnection conn = GetConnectionFactory(rabbitConfig).CreateConnection()) { using (IModel channel = conn.CreateModel()) { //在MQ上定义一个持久化队列,如果名称相同不会重复创建 channel.QueueDeclare(rabbitConfig.QueenName, true, false, false, null); byte[] buffer = Encoding.UTF8.GetBytes(Common.Plugin.JsonHelper.Serialize(obj)); IBasicProperties properties = channel.CreateBasicProperties(); properties.DeliveryMode = 2; channel.BasicPublish("", rabbitConfig.QueenName, properties, buffer); } } } catch (Exception ex) { Common.Plugin.LogHelper.Write(ex, "RabbitMq_SendMessage"); } }); } /// /// 批量推送 /// /// public static void SendMessage(List msgList) { foreach (var item in msgList) { SendMessage(item); } } } }