在Spring Cloud AWS中轮询线程行为

时间:2019-04-08 08:54:51

标签: amazon-web-services spring-cloud amazon-sqs spring-cloud-aws

我对轮询线程的行为有一点怀疑。

让我们假设一个场景中,每次轮询我要接收的maxNumberOfMessages为10。我们正在使用DEFAULT_WAIT_TIME = 20秒。我想知道它在下面提到的不同情况下的行为。

  1. 队列中是否有5-6条消息。那有多少可以退货呢?轮询线程会等待一段时间以获得更多消息吗?
  2. 如果队列中没有消息,它将等待直到收到一条消息,还是等待更多?
  3. 如果队列中有10条以上的消息,它将如何表现?

1 个答案:

答案 0 :(得分:0)

  1. 如果队列中的邮件少于您正在等待的邮件,那么将返回小于或等于可用邮件数的数字。在您的示例中,您可能会得到全部6个,但您可能只会得到3个,并且必须再次轮询其余部分。
  2. 如果没有消息,则轮询将一直等待,直到您的超时时间(以您的情况为20秒),然后返回一个空列表。
  3. 10条消息版本可能返回所有10条消息,但可能不会。与问题1一样,继续阅读以获取全部知识。

我所看到的是,如果您有100条消息,那么您很有可能全部收到它们,但这仍然不能保证。