【问题标题】:Concurrency feature of JavaCallable-Future using AWS-SQS使用 AWS-SQS 的 JavaCallable-Future 的并发特性
【发布时间】:2021-12-16 04:34:11
【问题描述】:

当前方法:对于 Spring Boot 应用,在 AWS 环境中:

  1. 服务层产生 5 个线程,使用 ExecutorService --> Callable-Future 进行并发处理。
  2. 完成后,每个可调用的未来任务都会返回响应。
  3. 来自 5 个线程的 5 个响应由 使用 future.get() 的单个调用类,然后进一步分析。
    这一切都很好。

问题
在AWS中,如何使用AWS-SQS/SNS来实现上述?

使用 SQS 的问题:根据我的分析
A) SNS 或 SQS 可以处理消息,但不能以值响应。
B)它可以发送回响应的唯一方法是将响应发布到另一个队列或使用回调
C) 使用 5 个单独的回调,很难将 5 个响应组合起来进行进一步分析 .

请问,从技术上讲,是否有办法使用 SQS 甚至 Kafka 来实现这一点?

附加信息:

  1. 线程池设置为 15 用于测试
  2. 处理每个线程大约需要 1 到 3 秒
  3. 频率为每分钟 30 次 API 调用 谢谢

【问题讨论】:

    标签: java future amazon-sqs java.util.concurrent callable


    【解决方案1】:

    SNS 和 SQS 是队列系统,因此您可以使用它们,但是对于这种情况是否有必要我不知道您的结构的详细信息。

    另外,您如何等待队列系统,您需要为每个请求等待一个线程并检索并处理它。

    我的意见是,如果您的负载很重,或者您不想丢失数据,您可以使用它们,因为它们是异步的。

    SQS 有顺序,SNS 是简单的队列,没有顺序。您可以等待 5 条消息被消费,然后再进行处理。

    恕我直言:如果您对性能没有问题,并且其他可调用的东西就足够了。

    问题:

    1- 你在使用线程池吗?

    2- 你需要执行多少进程?

    【讨论】:

    • 感谢 Gurkan,-回调的顺序不可靠,因为某些线程可能需要更多时间。 - API 调用本身是异步的,系统每分钟最多可以接收 30 个 API 调用 - 每个 API 调用产生 5 个线程。
    猜你喜欢
    • 1970-01-01
    • 2020-07-21
    • 2021-03-28
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2019-04-24
    • 2020-05-17
    • 2021-08-12
    相关资源
    最近更新 更多