是否必须在Java中使用JMS实现AWS SQS?

问题描述 投票:0回答:1

我是AWS SQS的新手,我想在我的项目中实现它。我的问题是我可以独立实现SQS还是需要使用SQS Java Messaging Library?你能帮帮我吗?提前致谢 。

java-ee jms amazon-sqs long-polling
1个回答
1
投票

绝对不是 - JMS根本不需要。实际上,我建议不要使用它,因为它是JMS 1.0并且没有利用任何JMS 2代码。

您可以从创建队列这样简单的事情开始:

CreateQueueRequest createQueueRequest = new CreateQueueRequest("my-queue-name");
String queueUrl = amazonSQS.createQueue(createQueueRequest).getQueueUrl();

然后,此队列可以将消息放入其中并从中读取。

最大的区别是SQS需要轮询。它不像onMessage中的MessageListener方法那样被事件驱动。您一次最多可以轮询和接收10条消息。这看起来像:

ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl)
                  .withMaxNumberOfMessages(10)
                  .withWaitTimeSeconds(5);

List<Message> messages = amazonSQS.receiveMessage(receiveMessageRequest).getMessages();

for (Message message : messages) {
    // process each message
}

话虽如此,你可以让一个线程进行读取,如果有消息,如果你愿意,可以自己发送给JMS队列。这最终是Amazon JMS / SQS库正在做的事情。

请查看Java SQS examples了解更多细节。

编辑

为了解决注释中发布的问题,处理SQS队列的一种方法是轮询线程中的特定SQS队列。虽然您可以轮询多个SQS队列,但在轮询一个队列时代码更简单一些。只要程序正在运行,您就会轮询SQS队列。如果您停止轮询,您将不再收到任何SQS消息。

© www.soinside.com 2019 - 2024. All rights reserved.