Autosave: 2024-11-25 07:19:28
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
tags: [AWS]
|
||||
---
|
||||
|
||||
# AWS Messaging services
|
||||
|
||||
## SNS
|
||||
|
||||
> SNS: Simple Notification Service
|
||||
|
||||
Similar to SQS but the focus is on notifications rather than messages, i.e
|
||||
events that fire when something specific happens, not just a message-send event.
|
||||
It can be used for passing notifications between applications or to persons
|
||||
through SMS, text, push notifications and email.
|
||||
|
||||
**SNS pushes messages out to subscribers while SQS stores the messages until
|
||||
someone reads them.**
|
||||
|
||||
Relation between SNS and SQS - typically paired aren't they.
|
42
neuron/f3ec2d6c-97a4-4a7a-9dfe-64824a6e94ae/AWS_SNS.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
tags: [AWS, SNS, SQS]
|
||||
created: Monday, November 25, 2024
|
||||
---
|
||||
|
||||
# AWS SNS
|
||||
|
||||
The Simple Notification Service is another form of messaging service in AWS,
|
||||
similar to [SQS](AWS_SQS.md). The key difference is that SNS pushes messages out
|
||||
to subscribers whereas SQS stores the messages until they are processed.
|
||||
|
||||
Before a message can be sent, and SNS topic must exist. One service such as a
|
||||
lambda will _publish_ to this topic. Another service, will _subscribe_ to the
|
||||
topic and be alerted when a message is sent to it.
|
||||
|
||||
With SNS, one message can be sent to multiple subscribers simultaneously. In
|
||||
addition there is message filtering at the subscription level so subscribers can
|
||||
choose to receive only the messages they are interested in.
|
||||
|
||||
Many other AWS services can act as SNS subscribers. Some common examples:
|
||||
|
||||
- SQS queues
|
||||
- Lambda functions (trigger on receipt of a message)
|
||||
- HTTP endpoints
|
||||
- Email/SMS/Push notifications to mobile apps
|
||||
|
||||
## Combining with SQS
|
||||
|
||||
Utilising SNS with SQS is a common pattern in serverless applications.
|
||||
|
||||
We use SNS to decouple publishers from subscribers and then use SQS to handle
|
||||
the different subscriber tasks. This is known as the "Fanout-Queue" pattern.
|
||||
|
||||

|
||||
|
||||
For example, an order is placed which results in a publication event to an SNS
|
||||
topic.
|
||||
|
||||
Multiple systems subscribe to this topic, e.g. an inventory system, a shipping
|
||||
system and an analytics system.
|
||||
|
||||
Each system has its own queue for processing the message.
|
|
@ -50,3 +50,8 @@ to the dead letter queue (DLQ) and remove it from the main queue.
|
|||
If the DLQ reaches a certain threshold this can trigger additional handling such
|
||||
as raising an Alert in [CloudWatch](./AWS_CloudWatch.md) or other monitoring
|
||||
tool.
|
||||
|
||||
Note that a DLQ is not a distinct entity within the SDK, it is just another SQS
|
||||
queue that is designated to store failures.
|
||||
|
||||
See [AWS SDK Syntax](AWS_SQS_SDK.md).
|
85
neuron/f3ec2d6c-97a4-4a7a-9dfe-64824a6e94ae/AWS_SQS_SDK.md
Normal file
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
tags: [AWS, SQS]
|
||||
created: Monday, November 25, 2024
|
||||
---
|
||||
|
||||
# AWS SQS SDK
|
||||
|
||||
## Initialising the SQS client
|
||||
|
||||
```ts
|
||||
import { SQSClient } from "@aws-sdk/client-sqs";
|
||||
|
||||
const sqs = new SQSClient({ region: "us-east-1" });
|
||||
```
|
||||
|
||||
## Sending a message to the queue
|
||||
|
||||
```ts
|
||||
import { SendMessageCommand } from "@aws-sdk/client-sqs";
|
||||
|
||||
const command = new SendMessageCommand({
|
||||
QueueUrl: queueUrl,
|
||||
MessageBody: messageBody,
|
||||
// Optional parameters
|
||||
DelaySeconds: 0,
|
||||
MessageAttributes: {
|
||||
CustomAttribute: {
|
||||
DataType: "String",
|
||||
StringValue: "CustomValue",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return await sqs.send(command);
|
||||
```
|
||||
|
||||
## Processing messages on the queue
|
||||
|
||||
```ts
|
||||
import { ReceiveMessageCommand } from "@aws-sdk/client-sqs";
|
||||
|
||||
const command = new ReceiveMessageCommand({
|
||||
QueueUrl: queueUrl,
|
||||
MaxNumberOfMessages: 10,
|
||||
WaitTimeSeconds: 20, // Long polling
|
||||
VisibilityTimeout: 30, // Time other consumers won't see this message
|
||||
});
|
||||
|
||||
const response = await sqs.send(command);
|
||||
|
||||
// Then do something
|
||||
|
||||
for (const message of response.Messages || []) {
|
||||
console.log(message);
|
||||
}
|
||||
```
|
||||
|
||||
## Removing message from queue
|
||||
|
||||
```ts
|
||||
import { DeleteMessageCommand } from "@aws-sdk/client-sqs";
|
||||
|
||||
for (const message of response.Messages || []) {
|
||||
await sqs.send(
|
||||
new DeleteMessageCommand({
|
||||
QueueUrl: queueUrl,
|
||||
ReceiptHandle: message.ReceiptHandle,
|
||||
}),
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## Query a DLQ
|
||||
|
||||
```ts
|
||||
const checkDLQ = async (dlqUrl: string) => {
|
||||
const command = new GetQueueAttributesCommand({
|
||||
QueueUrl: dlqUrl,
|
||||
AttributeNames: ["ApproximateNumberOfMessages"],
|
||||
});
|
||||
|
||||
const response = await sqs.send(command);
|
||||
return response.Attributes?.ApproximateNumberOfMessages;
|
||||
};
|
||||
```
|
Before Width: | Height: | Size: 664 B After Width: | Height: | Size: 664 B |
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 622 B |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
@ -13,16 +13,17 @@ computer science.
|
|||
|
||||

|
||||
|
||||
**Build ID:** 6bd22abe-1c26-4082-9ee1-2e98738d9784
|
||||
**Build ID:** f3ec2d6c-97a4-4a7a-9dfe-64824a6e94ae
|
||||
|
||||
**Published:** Sun 24 Nov 2024 10:53:17
|
||||
**Published:** Mon 25 Nov 2024 07:19:27
|
||||
|
||||
### Recent edits
|
||||
|
||||
- [[AWS_SNS]]
|
||||
- [[AWS_SQS]]
|
||||
- [[AWS_SQS_SDK]]
|
||||
- [[a771a6d9_attributes_of_internet_enclosure]]
|
||||
- [[JavaScript_module_types]]
|
||||
- [[AWS_SQS]]
|
||||
- [[Messaging_services]]
|
||||
- [[0716531c_rewilding_the_internet]]
|
||||
- [[f6564af9_AOL_and_early_internet_enclosure]]
|
||||
- [[Bauman_quote]]
|
||||
|
@ -30,10 +31,9 @@ computer science.
|
|||
- [[Pacman]]
|
||||
- [[Passing_arguments_and_options_to_Bash_scripts]]
|
||||
- [[Functions_in_Bash]]
|
||||
- [[Bash_file_exists]]
|
||||
|
||||
|
||||
### All notes (498)
|
||||
### All notes (499)
|
||||
|
||||
- [[0716531c_rewilding_the_internet]]
|
||||
- [[241fe1a3_the_Web_versus_modem_BBSs]]
|
||||
|
@ -48,7 +48,9 @@ computer science.
|
|||
- [[AWS_CLI]]
|
||||
- [[AWS_CloudWatch]]
|
||||
- [[AWS_SAM_and_Docker]]
|
||||
- [[AWS_SNS]]
|
||||
- [[AWS_SQS]]
|
||||
- [[AWS_SQS_SDK]]
|
||||
- [[AWS_architecture_hierarchy]]
|
||||
- [[Accessing_metadata_about_SQL_database]]
|
||||
- [[Accessing_secrets_from_a_Lambda]]
|
||||
|
@ -305,7 +307,6 @@ computer science.
|
|||
- [[Memory_addresses]]
|
||||
- [[Memory_leaks]]
|
||||
- [[Memory_versus_processor]]
|
||||
- [[Messaging_services]]
|
||||
- [[Middleware_in_NodeJS]]
|
||||
- [[Mixed_and_improper_fractions]]
|
||||
- [[Modelling_relationships_in_MongoDB]]
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 295 KiB After Width: | Height: | Size: 295 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 289 KiB After Width: | Height: | Size: 289 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 6.9 MiB After Width: | Height: | Size: 6.9 MiB |
Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 224 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 312 KiB After Width: | Height: | Size: 312 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 724 KiB After Width: | Height: | Size: 724 KiB |
Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 198 KiB |
Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 232 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 3.6 MiB After Width: | Height: | Size: 3.6 MiB |
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 204 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 165 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 9 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 808 KiB After Width: | Height: | Size: 808 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 470 KiB After Width: | Height: | Size: 470 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 175 KiB |
Before Width: | Height: | Size: 299 KiB After Width: | Height: | Size: 299 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 213 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 848 KiB After Width: | Height: | Size: 848 KiB |
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 226 KiB After Width: | Height: | Size: 226 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 153 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 414 KiB After Width: | Height: | Size: 414 KiB |
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 314 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 174 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 167 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 374 KiB After Width: | Height: | Size: 374 KiB |
Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 9 KiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 448 KiB After Width: | Height: | Size: 448 KiB |
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 668 KiB After Width: | Height: | Size: 668 KiB |
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 139 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 425 KiB After Width: | Height: | Size: 425 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
42
zk/AWS_SNS.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
tags: [AWS, SNS, SQS]
|
||||
created: Monday, November 25, 2024
|
||||
---
|
||||
|
||||
# AWS SNS
|
||||
|
||||
The Simple Notification Service is another form of messaging service in AWS,
|
||||
similar to [SQS](AWS_SQS.md). The key difference is that SNS pushes messages out
|
||||
to subscribers whereas SQS stores the messages until they are processed.
|
||||
|
||||
Before a message can be sent, and SNS topic must exist. One service such as a
|
||||
lambda will _publish_ to this topic. Another service, will _subscribe_ to the
|
||||
topic and be alerted when a message is sent to it.
|
||||
|
||||
With SNS, one message can be sent to multiple subscribers simultaneously. In
|
||||
addition there is message filtering at the subscription level so subscribers can
|
||||
choose to receive only the messages they are interested in.
|
||||
|
||||
Many other AWS services can act as SNS subscribers. Some common examples:
|
||||
|
||||
- SQS queues
|
||||
- Lambda functions (trigger on receipt of a message)
|
||||
- HTTP endpoints
|
||||
- Email/SMS/Push notifications to mobile apps
|
||||
|
||||
## Combining with SQS
|
||||
|
||||
Utilising SNS with SQS is a common pattern in serverless applications.
|
||||
|
||||
We use SNS to decouple publishers from subscribers and then use SQS to handle
|
||||
the different subscriber tasks. This is known as the "Fanout-Queue" pattern.
|
||||
|
||||

|
||||
|
||||
For example, an order is placed which results in a publication event to an SNS
|
||||
topic.
|
||||
|
||||
Multiple systems subscribe to this topic, e.g. an inventory system, a shipping
|
||||
system and an analytics system.
|
||||
|
||||
Each system has its own queue for processing the message.
|
|
@ -50,3 +50,8 @@ to the dead letter queue (DLQ) and remove it from the main queue.
|
|||
If the DLQ reaches a certain threshold this can trigger additional handling such
|
||||
as raising an Alert in [CloudWatch](./AWS_CloudWatch.md) or other monitoring
|
||||
tool.
|
||||
|
||||
Note that a DLQ is not a distinct entity within the SDK, it is just another SQS
|
||||
queue that is designated to store failures.
|
||||
|
||||
See [AWS SDK Syntax](AWS_SQS_SDK.md).
|
||||
|
|
85
zk/AWS_SQS_SDK.md
Normal file
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
tags: [AWS, SQS]
|
||||
created: Monday, November 25, 2024
|
||||
---
|
||||
|
||||
# AWS SQS SDK
|
||||
|
||||
## Initialising the SQS client
|
||||
|
||||
```ts
|
||||
import { SQSClient } from "@aws-sdk/client-sqs";
|
||||
|
||||
const sqs = new SQSClient({ region: "us-east-1" });
|
||||
```
|
||||
|
||||
## Sending a message to the queue
|
||||
|
||||
```ts
|
||||
import { SendMessageCommand } from "@aws-sdk/client-sqs";
|
||||
|
||||
const command = new SendMessageCommand({
|
||||
QueueUrl: queueUrl,
|
||||
MessageBody: messageBody,
|
||||
// Optional parameters
|
||||
DelaySeconds: 0,
|
||||
MessageAttributes: {
|
||||
CustomAttribute: {
|
||||
DataType: "String",
|
||||
StringValue: "CustomValue",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return await sqs.send(command);
|
||||
```
|
||||
|
||||
## Processing messages on the queue
|
||||
|
||||
```ts
|
||||
import { ReceiveMessageCommand } from "@aws-sdk/client-sqs";
|
||||
|
||||
const command = new ReceiveMessageCommand({
|
||||
QueueUrl: queueUrl,
|
||||
MaxNumberOfMessages: 10,
|
||||
WaitTimeSeconds: 20, // Long polling
|
||||
VisibilityTimeout: 30, // Time other consumers won't see this message
|
||||
});
|
||||
|
||||
const response = await sqs.send(command);
|
||||
|
||||
// Then do something
|
||||
|
||||
for (const message of response.Messages || []) {
|
||||
console.log(message);
|
||||
}
|
||||
```
|
||||
|
||||
## Removing message from queue
|
||||
|
||||
```ts
|
||||
import { DeleteMessageCommand } from "@aws-sdk/client-sqs";
|
||||
|
||||
for (const message of response.Messages || []) {
|
||||
await sqs.send(
|
||||
new DeleteMessageCommand({
|
||||
QueueUrl: queueUrl,
|
||||
ReceiptHandle: message.ReceiptHandle,
|
||||
}),
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## Query a DLQ
|
||||
|
||||
```ts
|
||||
const checkDLQ = async (dlqUrl: string) => {
|
||||
const command = new GetQueueAttributesCommand({
|
||||
QueueUrl: dlqUrl,
|
||||
AttributeNames: ["ApproximateNumberOfMessages"],
|
||||
});
|
||||
|
||||
const response = await sqs.send(command);
|
||||
return response.Attributes?.ApproximateNumberOfMessages;
|
||||
};
|
||||
```
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
tags: [AWS]
|
||||
---
|
||||
|
||||
# AWS Messaging services
|
||||
|
||||
## SNS
|
||||
|
||||
> SNS: Simple Notification Service
|
||||
|
||||
Similar to SQS but the focus is on notifications rather than messages, i.e
|
||||
events that fire when something specific happens, not just a message-send event.
|
||||
It can be used for passing notifications between applications or to persons
|
||||
through SMS, text, push notifications and email.
|
||||
|
||||
**SNS pushes messages out to subscribers while SQS stores the messages until
|
||||
someone reads them.**
|
||||
|
||||
Relation between SNS and SQS - typically paired aren't they.
|