Skip to content

Lifecycle Hooks

Lifecycle hooks expose Rabbit Relay operational events.

They are useful for logging, metrics, OpenTelemetry, debugging, and production visibility.


Basic usage

ts
const broker = new RabbitMQBroker("orders-service");

broker.on("consumer.started", (event) => {
  console.log("consumer started", event.queue);
});

broker.on("retry.scheduled", (event) => {
  console.log("retry scheduled", event.retryCount, event.delayMs);
});

Returned broker interfaces also support lifecycle hooks:

ts
const sub = await broker.queue("orders.q").exchange("orders.ex");

sub.on("consumer.started", (event) => {
  console.log(event.queue);
});

Supported events

EventMeaning
reconnectBroker reconnected
topology.assertedExchange/queue/binding topology was asserted
consumer.startedConsumer started
consumer.stoppedConsumer stopped
publish.failedPublish failed after retry attempt
retry.scheduledA retry was scheduled
broker.closedBroker was closed

Retry scheduled example

ts
broker.on("retry.scheduled", (event) => {
  console.log({
    queue: event.queue,
    exchange: event.exchange,
    routingKey: event.routingKey,
    retryCount: event.retryCount,
    attempts: event.attempts,
    delayMs: event.delayMs,
  });
});

Publish failed example

ts
broker.on("publish.failed", (event) => {
  console.error("publish failed", {
    exchange: event.exchange,
    routingKey: event.routingKey,
    eventName: event.eventName,
    error: event.error,
  });
});

Lifecycle hooks vs plugins

FeatureLifecycle HooksPlugins
ScopeBroker instanceProcess-wide
FocusOperations eventsMessage lifecycle
APIbroker.on(...)pluginManager.register(...)
Best forlogging, metrics, tracing, operationscross-cutting message behavior

Error behavior

If a lifecycle hook throws:

  • the error is caught and logged
  • Rabbit Relay continues running
  • the broker operation is not blocked

Keep hooks lightweight and non-blocking.


Summary

  • Lifecycle hooks expose broker operations
  • Useful for logging, metrics, and tracing
  • Local to a broker instance
  • Safe failure behavior
  • Foundation for the OpenTelemetry adapter

Released under the MIT License.