Skip to content

Commit

Permalink
[FEAT] rabbitmq retry template
Browse files Browse the repository at this point in the history
  • Loading branch information
ohksj77 committed Mar 20, 2024
1 parent 836405b commit 0767bec
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.twtw.backend.global.constant.RabbitMQConstant;
import com.twtw.backend.global.properties.RabbitMQProperties;

import lombok.RequiredArgsConstructor;

import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.retry.backoff.FixedBackOffPolicy;
import org.springframework.retry.policy.SimpleRetryPolicy;
import org.springframework.retry.support.RetryTemplate;

@EnableRabbit
@Configuration
Expand Down Expand Up @@ -121,4 +123,30 @@ public RabbitAdmin rabbitAdmin(final ConnectionFactory connectionFactory) {

return rabbitAdmin;
}

@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
final SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setConcurrentConsumers(3);
factory.setMaxConcurrentConsumers(10);
factory.setRetryTemplate(retryTemplate());
return factory;
}

@Bean
public RetryTemplate retryTemplate() {
final RetryTemplate retryTemplate = new RetryTemplate();

final SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
retryPolicy.setMaxAttempts(3);

final FixedBackOffPolicy backOffPolicy = new FixedBackOffPolicy();
backOffPolicy.setBackOffPeriod(3000);

retryTemplate.setRetryPolicy(retryPolicy);
retryTemplate.setBackOffPolicy(backOffPolicy);

return retryTemplate;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatusCode;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.client.ClientResponse;
import org.springframework.web.reactive.function.client.WebClient;

@Slf4j
Expand All @@ -29,8 +31,6 @@ public void handleDeadLetterMessage(final NotificationRequest message) {
.uri(slackUrl)
.bodyValue("{\"text\": \"Dead letter received: " + message + "\"}")
.retrieve()
.bodyToMono(String.class)
.doOnSuccess(s -> log.info("Slack message sent: {}", s))
.subscribe();
.onStatus(HttpStatusCode::isError, ClientResponse::createException);
}
}

0 comments on commit 0767bec

Please sign in to comment.