RabbitJob.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using Host.Common;
  2. using Host.IJobs.Model;
  3. using Host.Managers;
  4. using Quartz;
  5. using RabbitMQ.Client;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace Host.IJobs
  9. {
  10. public class RabbitJob : JobBase<LogRabbitModel>, IJob
  11. {
  12. private IConnection connection;
  13. public RabbitJob() : base(new LogRabbitModel())
  14. {
  15. connection = RabbitMQManager.Instance.Connection;
  16. }
  17. public override async Task NextExecute(IJobExecutionContext context)
  18. {
  19. var queue = context.JobDetail.JobDataMap.GetString(Constant.RabbitQueue);
  20. var body = context.JobDetail.JobDataMap.GetString(Constant.RabbitBody);
  21. LogInfo.RabbitQueue = queue;
  22. LogInfo.RabbitBody = body;
  23. var rabbitSet = await FileConfig.GetRabbitSetAsync();
  24. if (string.IsNullOrWhiteSpace(rabbitSet.RabbitHost) || string.IsNullOrWhiteSpace(rabbitSet.RabbitUserName))
  25. LogInfo.ErrorMsg = $"<span class='error'>请先在 [/seting] 页面配置RabbitMQ设置。</span>";
  26. else if (!connection?.IsOpen ?? true)
  27. LogInfo.ErrorMsg = $"<span class='error'>RabbitMQ服务连接失败。</span>";
  28. else
  29. {
  30. //创建通道
  31. using (var channel = connection.CreateModel())
  32. {
  33. //声明一个队列
  34. channel.QueueDeclare(queue, false, false, false, null);
  35. //发布消息
  36. channel.BasicPublish("", queue, null, Encoding.UTF8.GetBytes(body));
  37. channel.Close();
  38. }
  39. LogInfo.Result = "发送成功!";
  40. }
  41. }
  42. }
  43. }