Browse Source

message consumer retry 처리 & ack/reject 수동 처리

Test
노승철 2 years ago
parent
commit
e00158cff2
  1. 19
      src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java
  2. 9
      src/main/resources/application.yml

19
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);
GPModel model = new GPModel();
public void receivedDroneMessage(final String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) throws IOException {
try {
model = objectMapper.readValue(message, GPModel.class);
} catch (IOException e) {
e.printStackTrace();
}
GPModel model = objectMapper.readValue(message, GPModel.class);
messageService.insert(model); // GPS 정보 DB 동기화 처리
channel.basicAck(tag, false);
} catch (RuntimeException e) {
channel.basicReject(tag, false);
}
}
}

9
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

Loading…
Cancel
Save