Skip to content

Fix transient nonexcl queues issue with RabbitMQ 4 - #245

Merged
ono merged 2 commits into
mainfrom
fix-transient_nonexcl_queues-rmq4
Jun 14, 2026
Merged

Fix transient nonexcl queues issue with RabbitMQ 4#245
ono merged 2 commits into
mainfrom
fix-transient_nonexcl_queues-rmq4

Conversation

@ono

@ono ono commented Jun 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

This updates the RabbitMQ 4 development/test setup and documentation for RabbitMQ’s deprecated transient_nonexcl_queues feature.

RabbitMQ 4 can deny non-durable, non-exclusive queues by default. Since Queue.declare(chan) uses AMQP’s historical defaults of durable: false and exclusive: false, users can hit a broker-initiated connection close when running against RabbitMQ 4.

Changes

  • Add RabbitMQ 4 config to permit transient_nonexcl_queues for the local test container.
  • Mount that config from docker-compose.rabbitmq4.yml.
  • Remove the obsolete top-level Compose version field.
  • Document why Queue.declare(chan) can trigger this RabbitMQ 4 error.
  • Document alternatives:
    • use durable: true for durable named queues
    • use exclusive: true for private temporary queues
    • temporarily permit the deprecated feature in RabbitMQ config while migrating

Verification

  • docker compose -f docker-compose.rabbitmq4.yml config
  • docker compose -f docker-compose.rabbitmq4.yml up -d
  • mix test

Result: 67 passed

@ono
ono merged commit 0b9f9da into main Jun 14, 2026
14 checks passed
@ono
ono deleted the fix-transient_nonexcl_queues-rmq4 branch June 14, 2026 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant