From e00158cff2f49cf072a46641d42838162cf27291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?scnoh=28=EB=85=B8=EC=8A=B9=EC=B2=A0=29?= Date: Mon, 17 Oct 2022 17:10:49 +0900 Subject: [PATCH] =?UTF-8?q?message=20consumer=20retry=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=20&=20ack/reject=20=EC=88=98=EB=8F=99=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/message/consumer/MessageConsumer.java | 19 ++++++++++--------- src/main/resources/application.yml | 9 +++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java b/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java index 965d694..afb9004 100644 --- a/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java +++ b/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java @@ -4,9 +4,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.palnet.biz.message.service.MessageService; import com.palnet.comn.model.GPModel; import com.palnet.comn.utils.JsonUtils; +import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.support.AmqpHeaders; +import org.springframework.messaging.handler.annotation.Header; import org.springframework.stereotype.Component; import java.io.IOException; @@ -25,18 +28,16 @@ public class MessageConsumer { @RabbitHandler @RabbitListener(queues = {"app.drone.queue"}) - public void receivedDroneMessage(final String message) { - log.info("application message : {}", message); + public void receivedDroneMessage(final String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) throws IOException { + try { + GPModel model = objectMapper.readValue(message, GPModel.class); - GPModel model = new GPModel(); + messageService.insert(model); // GPS 정보 DB 동기화 처리 - try { - model = objectMapper.readValue(message, GPModel.class); - } catch (IOException e) { - e.printStackTrace(); + channel.basicAck(tag, false); + } catch (RuntimeException e) { + channel.basicReject(tag, false); } - - messageService.insert(model); // GPS 정보 DB 동기화 처리 } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4079316..a5d1b22 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -54,6 +54,15 @@ spring: port: 5672 username: guest password: guest + listener: + simple: + acknowledge-mode: manual + retry: + enabled: true + initial-interval: 3s + max-interval: 10s + max-attempts: 2 + multiplier: 2 server: port: 8080