Skip to content

CyAScott/poly-bus-transports-rabbitmq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PolyBus RabbitMQ Transport

RabbitMQ transport implementations for the PolyBus message bus framework, available in .NET, Python, and TypeScript.

Prerequisites

.NET

  • .NET SDK 10.0+
  • RabbitMQ server with management API enabled

Python

  • Python 3.8+
  • pip

TypeScript

  • Node.js 18+
  • npm 9+

Repository Structure

src/
  dotnet/     — .NET (netstandard2.1 library, net10.0 tests)
  python/     — Python implementation and tests
  typescript/ — TypeScript/Node.js implementation and tests

Projects

.NET

Located in src/dotnet/

  • PolyBus.Transports.RabbitMq — Core RabbitMQ transport library targeting netstandard2.1
  • PolyBus.Transports.RabbitMq.Tests — NUnit integration test suite targeting net10.0

See .NET README for full setup, build, and test instructions.

Python

Located in src/python/

  • transport/rabbitmq — Python RabbitMQ transport package
  • tests/transport/rabbitmq — pytest integration test suite

See Python README for full setup, build, and test instructions.

TypeScript

Located in src/typescript/

  • src/ — TypeScript RabbitMQ transport package
  • test/ — Vitest unit and integration tests

See TypeScript README for full setup, build, and test instructions.

Quick Start

.NET

cd src/dotnet
dotnet restore PolyBus.Transports.RabbitMq.slnx
dotnet build PolyBus.Transports.RabbitMq.slnx
dotnet test PolyBus.Transports.RabbitMq.slnx

Python

cd src/python
pip install -e ".[dev]"
python -m pytest

TypeScript

cd src/typescript
npm install
npm run build
npm test

Behavior

All three implementations share the same routing conventions:

  • Command, event, and direct exchanges.
  • Dead-letter queue setup.
  • Delayed delivery using binary routing segments and TTL dead-letter chaining.
  • Routing key format:
    • Publish: MessageType.Endpoint.Name.Major.Minor.Patch
    • Subscribe: MessageType.Endpoint.Name.Major.#

RabbitMQ Connection

All implementations default to:

amqp://guest:guest@localhost:5672

Set RABBITMQ_CONNECTION_STRING to override in tests.

Troubleshooting

Common Issues

  1. RabbitMQ not reachable — confirm the server is running and the connection string host/port are correct.
  2. Management API unavailable — .NET integration tests require the management plugin on port 15672.
  3. Language-specific issues — see the README in the relevant src/ subdirectory.

Contributing

  1. Keep behavior consistent across all three implementations.
  2. Run each implementation's full test suite before committing.
  3. Update the relevant src/*/README.md when adding features or changing configuration options.

License

See the LICENSE file for details.

About

An extension to poly-bus framework that adds a RabbitMQ transport implementation.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors