Amazon SQS 開発者ガイドの Amazon SQS での JMS の使用に関するセクションに、JMS を使用してメッセージを非同期に受信する方法を示すコード サンプルがあります。
まず、MessageListener インターフェースを実装します。
class MyListener implements MessageListener {
@Override
public void onMessage(Message message) {
try {
// Cast the received message as TextMessage and print the text to screen.
if (message != null) {
System.out.println("Received: " + ((TextMessage) message).getText());
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
そして、それを MessageConsumer の MessageListener として設定します。
// Create a consumer for the 'TestQueue'.
MessageConsumer consumer = session.createConsumer(queue);
// Instantiate and set the message listener for the consumer.
consumer.setMessageListener(new MyListener());
// Start receiving incoming messages.
connection.start();
// Wait for 1 second. The listener onMessage() method will be invoked when a message is received.
Thread.sleep(1000);