diff --git a/BMA.EHR.CheckInConsumer/Program.cs b/BMA.EHR.CheckInConsumer/Program.cs index eaba4b4b..95dac001 100644 --- a/BMA.EHR.CheckInConsumer/Program.cs +++ b/BMA.EHR.CheckInConsumer/Program.cs @@ -45,17 +45,29 @@ consumer.Received += async (model, ea) => var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); - //WriteToConsole($"ได้รับคำขอจาก Queue: {message}"); + WriteToConsole($"Received message: {message}"); - await CallRestApi(message, httpClient, configuration); + var success = await CallRestApi(message, httpClient, configuration); + + if (success) + { + channel.BasicAck(ea.DeliveryTag, multiple: false); + WriteToConsole("Message processed successfully"); + } + else + { + channel.BasicNack(ea.DeliveryTag, multiple: false, requeue: false); + WriteToConsole("Message processing failed - message rejected"); + } } catch (Exception ex) { WriteToConsole($"Error processing message: {ex.Message}"); + channel.BasicNack(ea.DeliveryTag, multiple: false, requeue: false); } }; -channel.BasicConsume(queue: queue, autoAck: true, consumer: consumer); +channel.BasicConsume(queue: queue, autoAck: false, consumer: consumer); WriteToConsole("Consumer started. Waiting for messages..."); @@ -67,7 +79,7 @@ static void WriteToConsole(string message) Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} : {message}"); } -static async Task CallRestApi(string requestData, HttpClient client, IConfiguration configuration) +static async Task CallRestApi(string requestData, HttpClient client, IConfiguration configuration) { try { @@ -79,26 +91,31 @@ static async Task CallRestApi(string requestData, HttpClient client, IConfigurat if (response.IsSuccessStatusCode) { var responseContent = await response.Content.ReadAsStringAsync(); - //WriteToConsole($"Success: {responseContent}"); + WriteToConsole($"API Success: {responseContent}"); + return true; } else { var errorMessage = await response.Content.ReadAsStringAsync(); var res = JsonSerializer.Deserialize(errorMessage); - WriteToConsole($"API Error: {res?.Message ?? "Unknown error"}"); + WriteToConsole($"API Error ({response.StatusCode}): {res?.Message ?? errorMessage}"); + return false; } } catch (HttpRequestException ex) { WriteToConsole($"HTTP Error: {ex.Message}"); + return false; } catch (TaskCanceledException ex) { WriteToConsole($"Timeout: {ex.Message}"); + return false; } catch (Exception ex) { WriteToConsole($"Unexpected Error: {ex.Message}"); + return false; } }