我想要实现的目标:
我想制作一个轮询 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/