1.2.9 • Published 7 months ago

@smendivil/little_bunny v1.2.9

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

Little Bunny Messaging Framework

A resilient messaging framework that seamlessly handles message delivery across different transport methods with automatic fallback capabilities.

Features

šŸš€ Multiple Transport Methods

  • RabbitMQ for robust message queuing
  • HTTP APIs for RESTful messaging
  • Automatic fallback when primary method fails

šŸ“Š Built-in Monitoring

  • Message success/failure tracking
  • Connection health monitoring
  • Detailed metrics for debugging

šŸ›”ļø Message Processing

  • Middleware support for message transformation
  • Header injection and validation
  • Extensible pipeline architecture

šŸ› ļø Developer Friendly

  • TypeScript-first approach
  • Dependency injection ready
  • Extensive test coverage (>94%)

Installation

npm install @smendivil/little_bunny

Quick Start

import { MessagingConfigBuilder, MessagingFactory } from '@smendivil/little_bunny';

// Create configuration
const config = new MessagingConfigBuilder()
  .withApiMessaging({
    baseUrl: 'http://api.example.com',
    timeout: 5000
  })
  .withRabbitMQ({
    url: process.env.RABBITMQ_URL,
    prefetch: 10
  })
  .withFallback('rabbitmq')
  .build();

// Initialize messaging
const messaging = new MessagingFactory(config).create();

// Add middleware (optional)
messaging.useMiddleware(new HeadersMiddleware());
messaging.useMiddleware(new ValidationMiddleware());

// Send messages
await messaging.sendMessage('my-queue', {
  id: crypto.randomUUID(),
  timestamp: new Date(),
  payload: { data: 'test' }
});

Configuration

API Messaging

withApiMessaging({
  baseUrl: string,           // API endpoint
  timeout?: number,          // Request timeout (ms)
  retryCount?: number,       // Retry attempts
  retryDelay?: number,       // Delay between retries (ms)
  healthCheck?: {
    enabled: boolean,        // Enable health checks
    interval: number         // Check interval (ms)
  }
})

RabbitMQ

withRabbitMQ({
  url: string,              // Connection URL
  prefetch?: number,        // Prefetch count
  retryCount?: number,      // Connection retries
  queues?: Record<string, string> // Queue mappings
})

Middleware

import { BaseMiddleware, Context } from '@smendivil/little_bunny';

export class CustomMiddleware extends BaseMiddleware {
  priority = 100; // Higher runs first

  async execute(context: Context): Promise<void> {
    // Modify message or metadata
    context.message.metadata = {
      ...context.message.metadata,
      processed: true
    };
  }
}

Testing

# Run all tests
npm test

# Run integration tests
npm run test:integration

# Generate coverage report
npm test -- --coverage

Current Coverage:

  • Statements: 94.57%
  • Branches: 83.92%
  • Functions: 93.61%
  • Lines: 95.85%

Publishing

# Create new version
npm run release [major|minor|patch]

# Publish to registry
npm publish

License

ISC License

1.2.9

7 months ago

1.2.8

7 months ago

1.2.7

8 months ago

1.2.6

8 months ago

1.2.5

8 months ago

1.2.4

8 months ago

1.2.3

8 months ago

1.2.2

8 months ago

1.2.1

8 months ago

1.2.0

8 months ago

1.0.1

8 months ago