【发布时间】:2020-08-26 11:36:05
【问题描述】:
我想用 Spring 集成创建一个简单的 IntegrationFlow,但遇到了困难。
我想创建一个集成流,从 Rabbit Mq 中的队列获取消息并将消息发布到端点 Rest。
我正在处理的问题是,当请求失败时,它会继续无休止地重试,我该如何在这段代码中实现重试策略? 例如,我想要 3 次重试,第一次在 1 秒后重试,第二次在 5 秒后重试,第三次在 1 分钟后重试。
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
RestTemplate restTemplate = new RestTemplate();
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
container.setQueueNames(BOUTIQUE_QUEUE_NAME);
container.setAcknowledgeMode(AcknowledgeMode.AUTO);
return IntegrationFlows.from(Amqp.inboundAdapter(container)) /* Get Message from RabbitMQ */
.handle(msg ->
{
String msgString = new String((byte[]) msg.getPayload(), StandardCharsets.UTF_8);
HttpEntity<String> requestBody = new HttpEntity<String>(msgString, headers);
restTemplate.postForObject(ENDPOINT_LOCAL_URL, requestBody, String.class);
System.out.println(msgString);
})
.get();
}
【问题讨论】:
标签: spring spring-integration spring-amqp spring-integration-dsl