Add delay to start message consumption until 8:10 AM and implement time calculation

This commit is contained in:
Suphonchai Phoonsawat 2026-01-19 22:42:39 +07:00
parent 79e0fe7f1b
commit 0ab75b2a19
2 changed files with 28 additions and 1 deletions

View file

@ -13,6 +13,9 @@ var configuration = new ConfigurationBuilder()
WriteToConsole("Consumer Start!");
// Wait until 8:00 AM before starting to consume messages
await WaitUntil8AM();
var host = configuration["Rabbit:Host"] ?? "";
var user = configuration["Rabbit:User"] ?? "";
var pass = configuration["Rabbit:Password"] ?? "";
@ -95,6 +98,30 @@ async Task CallRestApi(string requestData)
}
}
async Task WaitUntil8AM()
{
// Get current time in Bangkok timezone
var bangkokTimeZone = TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time");
var currentTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, bangkokTimeZone);
var targetTime = new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, 8, 10, 0);
// If current time is already past 8:10 AM today, start immediately
if (currentTime >= targetTime)
{
WriteToConsole($"Current time is {currentTime:HH:mm:ss}. Starting consumer immediately.");
return;
}
// Calculate time to wait
var timeToWait = targetTime - currentTime;
WriteToConsole($"Current time is {currentTime:HH:mm:ss}. Waiting until 08:10:00 to start consuming messages.");
WriteToConsole($"Time to wait: {timeToWait.Hours} hours, {timeToWait.Minutes} minutes, {timeToWait.Seconds} seconds");
await Task.Delay(timeToWait);
WriteToConsole("It's now 08:10:00. Starting to consume messages from queue.");
}
public class ResponseObject
{