ServiceBusService.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Microsoft.Azure.ServiceBus;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Reflection;
  5. using System.Text;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  9. using TEAMModelOS.SDK.Helper.Common.DateTimeHelper;
  10. using TEAMModelOS.SDK.Helper.Common.JsonHelper;
  11. using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
  12. using TEAMModelOS.SDK.Module.AzureServiceBus;
  13. using TEAMModelOS.Service.Services.Learn.Interfaces;
  14. namespace TEAMModelOS.Service.Services.Learn.Implements
  15. {
  16. public class ServiceBusService : IServiceBusService
  17. {
  18. private readonly IAzureServiceBusService _serviceBus;
  19. public ServiceBusService(IAzureServiceBusService azureServiceBus)
  20. {
  21. _serviceBus = azureServiceBus;
  22. }
  23. public async Task<long> SendMessage<T>(string TopicName, string info, long startTime, int status)
  24. {
  25. ITopicClient topicClient = _serviceBus.GetTopClient(TopicName).topicClient;
  26. //设定开始时间
  27. Dictionary<string, object> dict = new Dictionary<string, object>() {
  28. { "name",typeof(T).Name},
  29. { "info",info},
  30. { "status",status}
  31. };
  32. var message = new Message(Encoding.UTF8.GetBytes(dict.ToApiJson()));
  33. long time = startTime - new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
  34. if (time <= 0)
  35. {
  36. return -1;
  37. }
  38. message.MessageId = Guid.NewGuid().ToString();
  39. DateTime timer = DateTimeHelper.ConvertToDateTime(startTime);
  40. long SequenceNumber = await topicClient.ScheduleMessageAsync(message, new DateTimeOffset(timer));
  41. await topicClient.SendAsync(message);
  42. //await topicClient.CloseAsync();
  43. return SequenceNumber;
  44. }
  45. }
  46. }