微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Cloud RabbitMq:异常后重试发送

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?