wicketを使ってSQSを受信する方法

abstractクラスを作っておきます。

public abstract class AbstractTask implements ICode {

  public void start() {
    Task task = new Task(this.getClass().getName());
    Time startTime = getStartTime();
    Duration duration = getDuration();
    if (startTime != null) {
      if (Time.now().after(startTime)) {
        startTime = startTime.add(duration);
      }
      task.setStartTime(startTime);
    }
    task.run(duration, this);
  }

  protected abstract Time getStartTime();

  protected abstract Duration getDuration();
}

getDurationに対してDuration.ONE_MINUTEを指定することで1分ごとに実行されるようになります。

public class MyTask extends AbstractTask {

  @Override
  protected Duration getDuration() {
    return Duration.ONE_MINUTE;
  }

  /**
   * @param log
   */
  @Override
  public void run(Logger log) {

    try {
      AmazonSQS sqs = SQS.getClient();
      ReceiveMessageResult receiveMessage =
        sqs.receiveMessage(new ReceiveMessageRequest("SQSのキューのURL")
          .withMaxNumberOfMessages(5)
          .withVisibilityTimeout(60 * 5)
          .withWaitTimeSeconds(20)
          .withMessageAttributeNames("All"));
    } catch (Throwable t) {
      error(t.getMessage(), t);
    } finally {
    }
  }


}