问题描述
我正在制作一个从 队列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 (将#修改为@)