Purpose of Amazon SQS message's body as against message's attributes

Thịnh Phạm picture Thịnh Phạm · Dec 15, 2016 · Viewed 9.6k times · Source

What is the purpose of using message body in SQS while you're already able to add message attributes?

Let's take an example, we want to push a message to new-user queue when a new user registered, I imagine the message will have an attribute userId, I don't see the use of body here.

Answer

Arafat Nalkhande picture Arafat Nalkhande · Dec 16, 2016

Message attributes are supposed to be used as message metadata (like timestamp or possibly some category) and not the message itself.

Ideally, message payload should be given in the message body

So, for example if you are supporting JSON and XML payloads then possibly you can put payload type as message attribute and then when you fetch the message, based on this payload type attribute you decide between the JSON message processor or XML message processor. This is just a superficial example to explain the usage of attributes and body

Following is the extract from AWS Doc

Amazon SQS provides support for message attributes. Message attributes allow you to provide structured metadata items (such as timestamps, geospatial data, signatures, and identifiers) about the message. Message attributes are optional and separate from, but sent along with, the message body. This information can be used by the receiver of the message to help decide how to handle the message without having to first process the message body. Each message can have up to 10 attributes. To specify message attributes, you can use the AWS Management Console, AWS software development kits (SDKs), or query API.