RabbitMQ Infrastructure

RabbitMQ is the primary message broker for asynchronous communication between Tarasol microservices. It uses AMQP protocol for reliable message delivery.

Setup

# Docker setup
docker run -d --name rabbitmq \
  -p 5672:5672 \
  -p 15672:15672 \
  rabbitmq:3-management

Default management UI is available at http://localhost:15672 (guest/guest).

Exchange Configuration

ExchangeTypeDurablePurpose
identity_eventsTOPICYesUser lifecycle events
session_managerTOPICYesSession events
messagesTOPICYesNotification routing
ws_exchangeFANOUTYesWebSocket broadcasts
dlx_exchangeFANOUTYesDead letter handling
structure_entities_eventsFANOUTYesOrg structure changes
search-eventsTOPICYesSearch indexing

Queue Configuration

QueueDurableDLXPurpose
MultitenancyYesYesTenant events
CMSYesYesContent events
AdministrationYesYesAdmin/session events
NotificationsYesYesNotification delivery
ElectronicYesYesExternal correspondence
AuditTrailYesYesAudit log events
NotificationsDLQYesNoFailed notification retry

Dead Letter Configuration

All primary queues are configured with dead letter exchange routing:

{
  "x-dead-letter-exchange": "dlx_exchange",
  "x-dead-letter-routing-key": "dlq"
}
Warning

Monitor the NotificationsDLQ queue regularly. Messages in this queue represent failed deliveries that need manual inspection or automated retry.

Environment Variables

NameTypeDefaultDescription
RABBITMQ_URISstringamqp://guest:guest@localhost:5672RabbitMQ connection URI(s)
RABBITMQ_PREFETCHnumber10Consumer prefetch count
RABBITMQ_HEARTBEATnumber60Heartbeat interval in seconds