https://github.com/eneko/sqs-swift-demo
A demonstration of an AWS SQS producer and consumer written in Swift
https://github.com/eneko/sqs-swift-demo
Last synced: 3 months ago
JSON representation
A demonstration of an AWS SQS producer and consumer written in Swift
- Host: GitHub
- URL: https://github.com/eneko/sqs-swift-demo
- Owner: eneko
- Created: 2021-02-24T04:25:07.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-02-24T04:25:19.000Z (over 4 years ago)
- Last Synced: 2025-02-09T07:25:22.374Z (5 months ago)
- Language: Swift
- Size: 362 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SQSDemo
An example of an AWS SQS producer and consumer application written in Swift.

## Producer
The producer cli takes arguments from the command line to send messages:
```swift
import SotoSQSlet arguments = ProcessInfo.processInfo.arguments
guard arguments.count > 1 else {
print("Nothing to send")
exit(0)
}let client = AWSClient(httpClientProvider: .createNew)
defer { try? client.syncShutdown() }
let sqs = SQS(client: client, region: .uswest2)
let queue = "https://sqs.us-west-2.amazonaws.com//sqs-swift-demo"for message in arguments.dropFirst() {
let input = SQS.SendMessageRequest(messageBody: message, queueUrl: queue)
let result = try sqs.sendMessage(input).wait()
print(result.messageId ?? "[No id]")
}
```## Consumer
The consumer cli loops forever, waiting for messages to arrive.
```swift
import SotoSQSlet client = AWSClient(httpClientProvider: .createNew)
defer { try? client.syncShutdown() }
let sqs = SQS(client: client, region: .uswest2)
let queue = "https://sqs.us-west-2.amazonaws.com//sqs-swift-demo"// Poll for messages, waiting for up to 10 seconds
let request = SQS.ReceiveMessageRequest(queueUrl: queue, waitTimeSeconds: 10)// Fetch messages forever, until interrupted or terminated
while true {
print("Polling for messages...")
let result = try sqs.receiveMessage(request).wait()
for message in result.messages ?? [] {
print("Message Id:", message.messageId ?? "[no id]")
print("Content:", message.body ?? "[no message]")if let handle = message.receiptHandle {
let deleteRequest = SQS.DeleteMessageRequest(queueUrl: queue, receiptHandle: handle)
_ = try sqs.deleteMessage(deleteRequest).wait()
}
}
}
```