RabbitMQ Dead Letter Queue

RabbitMQ Dead Letter Queue

Introduction

To prevent data loss of RabbitMQ queue, Insights product will handle this with help of RabbitMQ dead letter queue.

Pre-Requisite:

  • Dead letter exchanges (DLXs) are normal exchanges, Insights planning maintain one queue for whole application.
  • DLX attached to normal queue (Health and Data) at the time declaration of queue, this means that user has to delete all their queue before activating DLX in their environment.
  • Insights Version 8.1+ support this functionality
  • If you already have agent registered, do the following steps in sequence
    • Stop All Agent
    • Consume all data from queue
    • Stop Engine, Daemon Agent and platform service
    • Delete all existing queue
    • Activate DLX mention in below section and start all services

Activation:

  1. Activate it in all configuration files mentioned below

In server-config for PaltformService and PlatfromEngine

Enable enableDeadLetterExchange in messageQueue section of server-config.json

"messageQueue": {
"host": "localhost",
"port": 5672,
"user": "",
"password": "",
"prefetchCount": 5,
"enableDeadLetterExchange":false
},

In Deamon Agent and In Agent

Enable enableDeadLetterExchange in mqConfig section of Config.json

In PlatformInsightsWebHook

Enable app.enableDeadLetterExchange in webhook_subscriber.properties

2.Restart all services after property changes


How to use it

  • One user activates DLX, application will create "iRecover" Exchange name with type "fanout" in RabbitMq
  • INSIGHTS_RECOVER_QUEUE will be created.
  • Declaration of DLX in RabbitMQ


Queue

Exchange

Agent/WebHook Queue

  • When any exception occurs during processing of messages then Insights application Reject that message and it will send to DLX Queue
  • Message in INSIGHTS_RECOVER_QUEUE of DLX contain in following format

Upgrading from older version of Insights

    • Stop All Agent
    • Consume all data from queue
    • Stop Engine, Daemon Agent and platform service
    • Delete all existing queue
    • Activate DLX mention in above section
    • start all services

Deactivating DLX

    • Stop All Agent
    • Consume all data from queue
    • Stop Engine, Daemon Agent and platform service
    • Delete all existing queue
    • Deactivate DLX by disabling enableDeadLetterExchange to false in server-config.json, Agents config.json and daemon agent config.json
    • Start all services



©2021 Cognizant, all rights reserved. US Patent 10,410,152