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