我想要实现的目标:

我想制作一个轮询 Amazon SQS 的 dropwizard 客户端。
每当在队列中发现消息时,就会对其进行处理和存储。

有关已处理消息的一些信息将通过 API 提供。

为什么我选择 Dropwizard:

似乎是制作 REST 客户端的不错选择。我需要有指标、数据库连接并与一些 Java 服务集成。

我需要什么帮助:

尚不清楚 SQS 轮询将如何以及在何处适用于典型的 dropwizard 应用程序。
它应该是托管资源吗?还是控制台记者 console-reporter ?或者是其他东西。

最佳答案

您可以使用 com.google.common.util.concurrent.AbstractScheduledService 创建消费者线程并将其作为 ManagedTask 添加到 dropwizard 的环境生命周期中。以下是伪代码——

public class YourSQSConsumer extends AbstractScheduledService {
  @Override
  protected void startUp() {
    // may be print something
  }

  @Override
  protected void shutDown() {
    // may be print something
  }

  @Override
  protected void runOneIteration() {
    // code to poll on SQS
  }

  @Override
  protected Scheduler scheduler() {
     return newFixedRateSchedule(5, 1, SECONDS);
  }
}

Main 中这样做 -
YourSQSConsumer consumer = new YourSQSConsumer();
Managed managedTask = new ManagedTask(consumer);
environment.lifecycle().manage(managedTask);

关于java - 使用 dropwizard 轮询 SQS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52096485/

10-11 01:01