我想将我的同步API之一转换为异步。我相信队列是做到这一点的一种方法。就像出版商一样,(同步)将消息推入队列,该消息将由消费者API从队列中消费。

问题描述 投票:0回答:2
如果您想从SQS消耗,则具有以下方法:

使用SDK填充以消费消息

使用Amazon SQS Java消息库
java amazon-web-services message-queue amazon-sqs polling
2个回答
7
投票

订阅SNS主题
  • 使用lambda
  • .
  • 如果您打算检索回复,您也可以利用
  • 虚拟队列
  • 在应用程序
  • sqs: region: ap-south-1 accessKeyId: arunsinghgujjar secretAccessKey: jainpurwalearunsingh/saharanpursepauchepuna cloud: aws: end-point: uri: https://arun-learningsubway-1.amazonaws.com/9876974864/learningsubway_SQS.fifo queue: max-poll-time: 20 max-messages: 10 fetch-wait-on-error: 60 enabled: true content: sqs
  • 写入SQS客户端
public String sendMessage(MessageDistributionEvent messageDistributionEvent) { SendMessageResponse sendMessage = null; try { Map<String, MessageAttributeValue> attributes = new HashMap<>(); String recepList = ""; for (Integer myInt : messageDistributionEvent.getRecipients()) { recepList = recepList + "_" + myInt; } SendMessageRequest sendMsgRequest = SendMessageRequest.builder() .queueUrl(url) .messageBody(messageDistributionEvent.getChannelId() + "_" + messageDistributionEvent.getMessageId() + "" + recepList) .messageGroupId("1") .messageAttributes(attributes) .build(); sendMessage = sqsClient.sendMessage(sendMsgRequest); } catch (Exception ex) { log.info("failed to send message :" + ex); } return sendMessage.sequenceNumber(); }

从队列阅读消息

ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder() .queueUrl(url) .waitTimeSeconds(maxPollTime) .maxNumberOfMessages(maxMessages) .messageAttributeNames("MessageLabel") .build(); List<Message> sqsMessages = sqsClient.receiveMessage(receiveMessageRequest).messages();

1
投票
参考

https://learningsubway.com/read-write-data-into-into-aws-sqs-using-java/

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.