---
# System prepended metadata

title: DAM M06. RPC amb RabbitMQ
tags: [' RPC', ' RabbitMQ', DAM, ' M6', ' Dades']

---

---
title: DAM M06. RPC amb RabbitMQ
tags: DAM, M6, RabbitMQ, RPC, Dades
---

![](https://hackmd.io/_uploads/rkz_syYE2.png)


[Enllaç a Hackmk.io](https://hackmd.io/@JdaXaviQ/ByL5c1FNh)

## DAM M06. RPC amb RabbitMQ.
El nostre component d'accés a dades basat en RabbitMQ, necessitarà un canal de resposta quan la aplicació client li demani recuperar informació de la base de dades.
A la pròpia pàgina oficial de RabbitMQ, a la secció de tutorials trobem un que s'ajusta a la perfecció a les nostres necessitats, el tutorial anomenat [Remote Procedure Call](https://www.rabbitmq.com/tutorials/tutorial-six-python.html).
![](https://hackmd.io/_uploads/ByWm3JKV3.png)

Per a implementar aquest sistema necessitem complir les següents condicions:
1. El client ha d'indicar al servidor per quina cua espera rebre el missatge amb la resposta de cada petició. Aquesta restricció la podem solventar enviant el nom de la cua per on volem rebre la resposta dins de la propietat 'reply_to' del missatge de la petició.
2. Si no volem crear una nova cua per a cada resposta, les respostes han de poder identificar unívocament a quina crida pertanyen. Aquí també utilitzarem una de les propietats bàsiques del missatge de la petició, la 'correlation_id'.

```mermaid
sequenceDiagram
    participant App
    participant Component_Dades
    
    
    Note right of App: Crea una cua per a rebre les respostes.
    Note right of App: Envia una petició de dades.
    Note right of App: adjuntant la cua on espera la resposta dins de la propietat reply_to
    Note right of App: i un identificador únic a la propietat correlation_id.
    App->>Component_Dades: Missatge amb petició de dades.
    activate App
    activate Component_Dades
    Note left of Component_Dades: Rep el missatge per la cua de peticions.
    Note left of Component_Dades: Obté la resposta de la base de dades
    Note left of Component_Dades: Adjunta el valor de la correlation_id rebuda a la resposta.
    Component_Dades->>App: Envia la resposta
    deactivate Component_Dades
    deactivate App
    Note right of App: Procés de les dades rebudes.
```