protobus
v1.1.1
Published
The Protobus micro-services framework
Downloads
771
Maintainers
Readme
ProtoBus
A lightweight, scalable microservices message bus written in TypeScript.
ProtoBus uses RabbitMQ for message routing and load balancing, and Protocol Buffers for fast, type-safe serialization.
Installation
npm install protobusQuick Start
import { Context, MessageService, ServiceProxy } from 'protobus';
// Initialize context
const context = new Context();
await context.init('amqp://localhost:5672/', ['./proto/']);
// Create a service
class Calculator extends MessageService {
get ServiceName() { return 'Math.Calculator'; }
get ProtoFileName() { return './calculator.proto'; }
async add(request: { a: number, b: number }) {
return { result: request.a + request.b };
}
}
const service = new Calculator(context);
await service.init();
// Call the service
const client = new ServiceProxy(context, 'Math.Calculator');
await client.init();
const response = await client.add({ a: 1, b: 2 }); // { result: 3 }Documentation
| Document | Description | |----------|-------------| | Getting Started | Step-by-step guide to your first service | | Architecture | System design and component overview | | Configuration | Environment and connection settings | | Message Flow | How messages travel through the system |
API Reference
| Component | Description | |-----------|-------------| | Context | Connection and factory management | | MessageService | Base class for implementing services | | ServiceProxy | Client for calling remote services | | ServiceCluster | Managing multiple service instances | | Events | Pub/sub event system |
Advanced Topics
| Topic | Description | |-------|-------------| | Protobuf Schema | Defining service interfaces | | Error Handling | Retry logic and dead-letter queues | | Custom Logger | Integrating your own logger |
Reference
| Document | Description | |----------|-------------| | Troubleshooting | Common issues and solutions | | Migration Guide | Upgrading between versions | | Known Issues | Current limitations |
Requirements
- Node.js 18+
- RabbitMQ 3.8+
Running Tests
# Unit tests
npm test
# Integration tests (requires Docker)
npm run test:integrationLicense
MIT License - Copyright (c) 2018 Remarkable Games Ltd.
