gpt4 book ai didi

java - Spring AMQP 对消息超时采取行动

转载 作者:行者123 更新时间:2023-11-30 07:41:35 24 4
gpt4 key购买 nike

我正在使用 Spring AMQP 进行异步消息传递。我的模型假设有两个应用程序 A 和 B,分别是生产者和消费者。

  • A 向 B 发送作业请求并开始监听。
  • B 正在监听作业请求,当请求到来时,启 Action 业并定期向 A 发送进度消息。
  • 作业完成后,B 向 A 发送作业完成消息。
  • A 会消耗进度消息,直到出现作业完成消息,则 A 存在。

我在类级别使用@RabbitListener,在方法级别使用@RabbitHandler,用于消息消费。一切都运行良好,设计简洁,我喜欢 Spring 的解决方案。

我的问题是 - 当 A 期望从 B 接收进度消息(任何消息)但它没有传入时,我不知道如何检测以及如何采取行动。这种情况是否有超时?如果是的话,如何实现回调方法?

我发现了一些超时设置,但它们通常适用于连接本身,或者仅在使用 RPC 模式(一请求一响应)时有效。

所需的解决方案是 - A 应该每分钟收到进度消息。如果没有消耗任何进度消息,例如 3 分钟,我想取消该作业。

最佳答案

使用异步使用者时,如果在一段时间内未收到消息,则没有机制生成事件。

您可以安排自己的任务,并在消息到达时取消/重新安排任务。

使用TaskScheduler

future = Schedule(myRunnable, new Date(System.currentTimeMillis() + 180000));

当消息到达时使用 future.cancel()

关于java - Spring AMQP 对消息超时采取行动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34628186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com