Skip to content

bitrix24/b24rabbitmq

Repository files navigation

@bitrix24/b24rabbitmq

Working with the RabbitMQ queue broker.

Allows to configure exchanges, queues. Includes templates for Producer, Consumer in NodeJs.

We will add PHP support soon.

WARNING We are still updating this page Some data may be missing here — we will complete it shortly.

Configuration example

// rabbitmq.config.ts
import type { RabbitMQConfig } from '~/rabbitmq/types';

export const rabbitMQConfig: RabbitMQConfig = {
  connection: {
    url: 'amqp://localhost',
    reconnectInterval: 5000,
    maxRetries: 5
  },
  exchanges: [
    {
      name: 'demo1.events.v1',
      type: 'direct',
      options: { durable: true }
    }
  ],
  queues: [
    {
      name: 'demo1.v1',
      options: { durable: true },
      bindings: [
        {
          exchange: 'demo1.events.v1',
          routingKey: 'event.succeeded'
        }
      ]
    }
  ],
  channel: {
    prefetchCount: 1
  }
};

Example for Producer

// producers/demo1-producer.ts
import { RabbitMQProducer } from '~/rabbitmq/producer';
import { rabbitMQConfig } from '../rabbitmq.config';

const producer = new RabbitMQProducer(rabbitMQConfig);

export async function sendTask(dots: string) {
  await producer.publish(
    'demo1.events.v1',
    'event.succeeded',
    { task: dots },
    { persistent: true }
  );
  console.log(`Sent task: ${dots}`);
}

// Example message sending
const tasks = ['...', '....', '.....', '..', '.'];
tasks.forEach(async (task) => {
  await sendTask(task);
  await new Promise(resolve => setTimeout(resolve, 1000));
});

More examples can be found in documentation and in @bitrix24/app-template-automation-rules

Documentation

Read

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •