AWS Application Integration
Published: 2019-09-25 05:21:36

# Step Functions
it helps in defining the lambda function

# Amazon MQ
it’s replacement of rabbit MQ

# SNS (Simple Notification Service)
•	It's a push-based service.
•	It can be used to push notifications to:
```
o	Mobile devices
o	SQS
o	HTTP endpoint
o	SMS text messages
o	Email
o	Lambda can be consumer of this topic and trigger another SNS or AWS services.
```
•	Topic:
```
o	An access point for allowing recipients to dynamically subscribe.
o	It can deliver to multiple recipients together line iOS, Android and SMS.
o	It's stored across multiple AZ.
o	The messages from this topic will be delivered to all the subscribers.
```

# SQS (Simple Queue Service)
•	It’s message oriented.
•	It helps in integrating with other AWS services.
•	It's a pull-based services.
•	The maximum size of the message stored in the queue is 256 KB.
•	Type of message can be XML, JSON, and unformatted text
•	If the rate of producing the messages is more than the rate of consuming the message or vice-versa in that case, we can use Auto Scaling Group, so that if the messages are more than more EC2 instances would be created and if the messages are less than unused EC2 instances could be terminated.
•	Messages in the queue can be kept from 1 min to 14 days and default is 4 days.
•	There is guarantee for the messages getting processed at least once.
•	Polling
```
o	Short: Returns immediately if no messages are in queue.
o	Long: Polls the queue periodically and only returns the response when a message is in the queue or timeout is reached.
```
•	Visibility Timeout
```
o	When the message is received by the consumer, this message gets marked as invisible in the queue. If the job gets processed by the consumer before the time out then it would be deleted from the queue else it would become visible again.
o	Default is 30 seconds and maximum are 12 hours. Any executions, which needs more than 12 hours of execution better have a lambda function to this message and split it into multiple topics and have other lambdas integrated with these topics.
```
•	Types
```
o	Standard
	This is the default queue.
	Although the consumption of message is ensured based on the order they are received but nor guaranteed.
	Chances are there for any of the messages getting consumed more than 1 time. 
o	FIFO
	Consumption of message is guaranteed based on the order they are received.
	All behavior is same as default queue with only limitations is 300 Tx/sec. Reason for this limitation could be because standard is the default implementation and bit of change in the design to get FIFO design brings in this limitation.
	It will be consumed once unless it gets deleted by the consumer.
```

# SWF (Simple Workflow Service)
•	It's a task oriented and contains following actors:
```
o	Workflow starters: an application that initiate the workflow, e.g. website.
o	Workers: it’s a program that gets tasks, process it and return the result.
o	Decider: it controls the coordination of tasks.
```
•	Domains: it’s a kind of meta data, a collection of related workflows, which is stored in JSON. 
•	Maximum workflow retention period is 1 year and stored in seconds.
•	SWF brokers the interactions b/w workers and deciders.
•	SWF makes sure that the task in not repeated.
•	It allows decider to have clear idea of the progress of tasks and to start the new task.

# SES (Simple Email Service)