vulcain-corejs
Version:
Vulcain micro-service framework
61 lines (60 loc) • 2.06 kB
TypeScript
import { IActionBusAdapter, IEventBusAdapter } from '../bus/busAdapter';
import { EventData } from "./messageBus";
import { RequestData } from "../pipeline/common";
export declare class RabbitAdapter implements IActionBusAdapter, IEventBusAdapter {
private address;
private eventHandlers;
private channel;
private initialized;
private ignoreInputMessages;
constructor(address: string);
open(): Promise<void>;
pauseReception(): void;
resumeReception(): void;
stopReception(): void;
dispose(): void;
/**
* Send domain event (event raises by an action)
* Domain events are shared by all services of any domains
*
* @param {string} domain
* @param {EventData} event
*
* @memberOf RabbitAdapter
*/
sendEvent(domain: string, event: EventData): void;
private createSourceName(domain);
private createEventQueueName(domain, key?);
/**
* Listening for domain events
*
* @param {string} domain
* @param {Function} handler
* @param {string} queuename
*
* If queuename is set, event are take into account by only one instance and a ack is send if the process complete sucessfully
* else event is distributed to every instance with no ack
*/
consumeEvents(domain: string, handler: (event: EventData) => void, distributionKey?: string): void;
/**
* Task = asynchronous action
* Shared by the current service instances
*
* @param {string} domain
* @param {string} serviceId
* @param {ActionData} command
*
* @memberOf RabbitAdapter
*/
publishTask(domain: string, serviceId: string, command: RequestData): void;
/**
* Listening for asynchronous task
*
* @param {string} domain
* @param {string} serviceId
* @param {Function} handler
*
* @memberOf RabbitAdapter
*/
consumeTask(domain: string, serviceId: string, handler: (event: RequestData) => void): void;
}