using Npgsql; using System; using System.Threading.Tasks; class HangfireTrigger { static async Task Main() { var connectionString = "Host=127.0.0.1;Port=5432;Database=kartselldb;Username=kartsell;Password=kartsell4321@!"; Console.WriteLine("šŸ” Hangfire ģˆ˜ė™ 트리거 ģ‹œģž‘..."); Console.WriteLine($" DB: kartselldb"); Console.WriteLine($" Job ID: historical-batch-shadow-run"); try { using (var conn = new NpgsqlConnection(connectionString)) { await conn.OpenAsync(); Console.WriteLine("āœ… DB ģ—°ź²° 성공"); // 1. ķ˜„ģž¬ job 상태 ķ™•ģø Console.WriteLine("\n1ļøāƒ£ ķ˜„ģž¬ Hangfire recurring job 상태:"); using (var cmd = new NpgsqlCommand( "SELECT recurringjobid, cron, queue, nextexecutiontickcount FROM hangfire.recurringjob WHERE recurringjobid = @jobId", conn)) { cmd.Parameters.AddWithValue("@jobId", "historical-batch-shadow-run"); using (var reader = await cmd.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { Console.WriteLine($" Job ID: {reader.GetString(0)}"); Console.WriteLine($" Cron: {reader.GetString(1)}"); Console.WriteLine($" Queue: {reader.GetString(2)}"); Console.WriteLine($" NextExecutionTickCount: {reader.GetInt64(3)}"); } else { Console.WriteLine(" āŒ Job not found!"); return; } } } // 2. Job 트리거 (nextexecutiontickcount = 0으딜 설정) Console.WriteLine("\n2ļøāƒ£ Job ģ¦‰ģ‹œ 실행 트리거..."); using (var cmd = new NpgsqlCommand( "UPDATE hangfire.recurringjob SET nextexecutiontickcount = 0 WHERE recurringjobid = @jobId", conn)) { cmd.Parameters.AddWithValue("@jobId", "historical-batch-shadow-run"); var rows = await cmd.ExecuteNonQueryAsync(); Console.WriteLine($"āœ… {rows} row(s) ģ—…ė°ģ“ķŠøėØ"); } // 3. ģ—…ė°ģ“ķŠø ķ™•ģø Console.WriteLine("\n3ļøāƒ£ ģ—…ė°ģ“ķŠø ķ™•ģø:"); using (var cmd = new NpgsqlCommand( "SELECT nextexecutiontickcount FROM hangfire.recurringjob WHERE recurringjobid = @jobId", conn)) { cmd.Parameters.AddWithValue("@jobId", "historical-batch-shadow-run"); var result = await cmd.ExecuteScalarAsync(); Console.WriteLine($" NextExecutionTickCount: {result}"); } Console.WriteLine("\nāœ… Hangfire job 트리거 ģ™„ė£Œ!"); Console.WriteLine(" - Hangfire ģ„œė¹„ģŠ¤ź°€ 실행 ģ¤‘ģ“ė©“ 약 1ė¶„ 낓에 job ģ‹œģž‘"); Console.WriteLine(" - Phase 1: 252 ź±°ėž˜ģ¼ (8.6쓈)"); Console.WriteLine(" - Phase 2: ė©”ķŠøė¦­ 계산 (5ė¶„)"); Console.WriteLine(" - Phase 3: ź²Œģ“ķŠø 통과 ģ‹œ ģžė™ 실행"); } } catch (Exception ex) { Console.WriteLine($"āŒ 오넘: {ex.Message}"); Console.WriteLine(ex.StackTrace); } } }