是否必须使用 Java 中的 JMS 实施 AWS SQS?



我是 AWS SQS 的新手,我想在我的项目中实施它。我的问题是我可以独立实现 SQS 还是需要使用 SQS Java 消息传递库?你能帮我吗?提前谢谢.

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

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

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

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

最大的区别是 SQS 需要轮询。 它不像MessageListener中的onMessage方法那样是事件驱动的。 您一次最多可以轮询和接收 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 示例以获取更多详细信息。

编辑

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

最新更新