# Pipeline de mensagens - SenseUp 1) Toda mensagem é produzida por um ***datasource*** ou injetada para um ***datasource***. 1) Todas as mensagens da plataforma, seja encaminhada via ingestão de dados externa ou produzidas por flows de usuários são enviadas para um **entry point unificado** (*unified ingestion entrypoint*). 3) Do entrypoint unificado, uma função é responsável por consumir e distribuir cada mensagem para a fila do ***datasource*** correto. * A função deve recorrer a um mapeamento de tópico-datasource: ```json TOPIC <topic> => { "eventhub": "<topic>", "endpoint": "senseup-ns3.servicebus.windows.net", "namespace": "senseup-ns3" } ``` * [ ] Um **job recorrente** deve ser criado para garantir sincronia entre o *cache* e o *master data*. 5) Dentro de um flow é possível utilizar um node de consumidor de ***datasource***. O usuário deve selecionar de um dropdown o Datasource de onde quer consumir. 6) Dentro de um flow é possível utilizar um node produtor para ***datasource***. O usuário deve selecionar de um dropdown o Datasource para o qual quer injetar eventos. 7) O plugin deve obter informação de ***datasources*** através de cache mantido no Redis (**DATASOURCES**) ```json DATASOURCES "1" => { id: 1, description: "Corredor Sul - Pontos Alarmados", "topic": "pontos-alarmados", "endpoint": "senseup-ns3.servicebus.windows.net", "ns": "senseup-ns3" } "2" => { id: 2, description: "Corredor Sul - Pontos Alarmados", "topic": "...", "endpoint": "...", "ns": "" } ``` ![](https://i.imgur.com/Vqnv0kN.png) ```json= { "topic": "", "timestamp": "", "payload": {}, "origin": "" "flow_id": "" } ``` * Example ```json= { "topic": "topictesting3", "timestamp": "2021-04-09T00:00:00Z", "payload": { "deviceId": "2", "Foo": "Bar", "field1": [ { "field2": "value1", "field3": "value2" }, { "field4": "value3" } ] } "origin": "flow", "flow_id": "123asda2-asdas23asda-123as", } ```