如何解决Spring Cloud RabbitMq:异常后重试发送
我正在制作一个从 队列1 接收数据,存储并发送到 队列2 的应用。它还从 队列2 接收数据,发出请求(http),保存并发送到 队列3 。如果在处理队列中的数据时出错,我想使它们永远保持一致(再次从队列中获取)。当我从 队列2 获取数据时,出现错误,但是随后我在 队列1 ,而不是我期望的 队列2 。
这是我的处理器
public interface MyProcessor {
String INPUT = "input-1";
String OUTPUT = "input-2";
@Input(INPUT)
SubscribableChannel input();
@Output(Source.OUTPUT)
MessageChannel output();
}
public interface MyProcessor2 {
String INPUT = "input-2";
String OUTPUT = "input-3";
@Input(INPUT)
SubscribableChannel input();
@Output(Source.OUTPUT)
MessageChannel output();
}
我的消费者:
@Slf4j
@Component
@EnableBinding(MyProcessor.class)
@requiredArgsConstructor
public class MyConsumer {
private final SomeService someService;
@Transformer(inputChannel = MyProcessor.INPUT,outputChannel = MyProcessor.INPUT)
public SomeEntity handle(String text) {
SomeEntity entity = new SomeEntity(text);
entity = someService.save(entity);
return entity ;
}
}
@Slf4j
@Component
@EnableBinding(MyProcessor2.class)
@requiredArgsConstructor
public class MyConsumer2 {
private final SendService sendService;
private final SomeService someService;
@Transformer(inputChannel = MyProcessor2.INPUT,outputChannel = MyProcessor2.OUTPUT)
@Transactional
public SomeEntity handle(SomeEntity entity) {
entity = sendService.send(entity);
entity = someService.save(entity);
return entity;
}
}
我的application.yml
spring:
cloud:
stream:
bindings:
input-1:
destination: input-event
input-2:
destination: send-event
input-3:
destination: end-event
default:
contentType: application/json
因此,当我在MyConsumer2
中遇到异常时,我又在MyConsumer
中有消息了,而不是在我的MyConsumer2
中
该如何解决?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。