AMQP - Propriedades de Mensagem
Tags: rabbitmq
Published: 2021-05-05 19:30:03

###COMPONENTES DE UMA MENSAGEM PUBLICADA
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt61tottmy84q3t5fs67.png)
 
###PROPRIEDADES (AMQP)

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gijijv1634s0b299onei.png) 

####USO DA APLICAÇÃO

**message-id** short-string 

Alguns tipo de mensagem necessitam de um identificador único para que os sistemas possam identificar esta mensagem individualmente a medida que passam por diversos sistemas.

**correlation-id** short-string 

Embora não haja uma definição formal para o ID de correlação na especificação AMQP, uma opção é usá-lo para transportar um ID de transação ou outros dados semelhantes aos quais a mensagem está fazendo referência.

**timestamp** timestamp 

A propriedade timestamp não tem definição formal, mas pode ser usado para definir quando a mensagem foi criada. 
Uma opção é usá-la quando existe um acordo de nível de serviço (SLA) que seus processos precisam aplicar.

**delivery-mode** octet 

O modo de entrega propriedade tem dois valores possíveis:
 
  * 1 - Para uma mensagem não persistente (gravar em memória).
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mmpqu0afx3zmz442af0.png)
 
  * 2 - Para uma mensagem persistente mensagem (gravar no disco).
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oar67q5qjjyajk5rzeb2.png)
 
**app-id** short-string 
Útil para definir qual usuário que está publicando a mensagem. Uma opção é usá-la para o consumidor conseguir validar a origem da mensagem.

**user-id** short-string 
Útil para definir qual usuário que está publicando a mensagem. Uma opção é usá-la para o consumidor conseguir validar o usuário que publicou a mensagem e realizar validações.

**contentencoding**  short-string 
Mensagens enviadas pelo AMQP não utiliza compressão por padrão. Isto pode ser problemático com mensagens grande quantidade de conteúdo, por exemplo usando XML, JSON ou YAML.
Desta forma especifique se o corpo da sua mensagem é codificado de alguma forma especial, como zlib, deflate, ou Base64

**content-type** short-string 
Aplicação que especifica o tipo de messagem no corpo das mensagens usando MIME-TYPES (Json, Texto e etc..)

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdd0aupjabqaaet0olax.png)

**type** short-string 
Descreve o Tipo de Mensagem ou Payload da mensagem publicada. Uma opção é usá-la para determinar qual o formato de serialização utilizado na mensagem como: 
* [Apache Thrift] (http://thrift.apache.org/)
* [Google’s Protobuf] (https://code.google.com/p/protobuf/).
* [MessagePack] (http://msgpack.org/).    
 
**headers** table 
Tabela de "chave/valor" de formato livre que você pode usar para adicionar metadados adicionais sobre a mensagem.
Sendo possível rotear com base nisso se
desejado.

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v492me8yg1nhrt95gnl5.png)
 
**priority** octet 
Propriedade para ordenação de prioridade em filas.
É definido como um número inteiro com valores possíveis de 0 a 9 a serem usados ​​para priorização de mensagens em filas.
Conforme especificado, se uma mensagem com prioridade 9 for publicada, e subsequentemente, uma mensagem com prioridade 0 é publicada, um novo
o consumidor receberia a mensagem com a prioridade 0 antes da mensagem com um
prioridade de 9. 

**expiration** short-string 

Define o TTL (time to live) da mensagem indicando quando o mensagem irá expirar. Sendo definido um tempo em milissegundo.

###Referencias

[Messaging Patterns - Correlation Identifier](https://www.enterpriseintegrationpatterns.com/patterns/messaging/CorrelationIdentifier.html)
[RabbitMQ in Depth](https://www.manning.com/books/rabbitmq-in-depth)