0.0.9 • Published 7 years ago
@askq/amqp v0.0.9
@askq/amqp
Use amqp with typescript decorators
Example
import {
amqp,
Request,
Reply,
RequestType,
Producer,
Publish,
PublishType,
Consumer,
Consume
} from '@askq/amqp';
@Producer('hello-world')
class HelloWorldProducer {
// Produce to "hello-world/print" queue
@Produce('print')
public print: PublishType<string>;
@Request('printWait')
public printWait: RequestType<string, string>;
}
@Consumer('hello-world')
class HelloWorldConsumer {
// Consume from "hello-world/print" queue
@Consume('print')
public async onPrint(msg): Promise<boolean> {
console.log('Print:', msg);
return true;
}
@Reply('printWait')
public async onPrintWait(msq): Promise<string> {
console.log('PrintWait:', msg);
return 'Done printing';
}
}
async function run() {
// Connect to amqp service
let mq = await amqp.connect('amqp://rabbitmq:15672', {
producers: [
HelloWorldProducer
],
consumers: [
HelloWorldConsumer
]
});
let producer = new HelloWorldProducer();
let consumer = new HelloWorldConsumer();
await producer.print('Hello world');
console.log('produced to print queue');
let response = await producer.printWait('Hello world');
console.log('response from printWait:', response);
}
run();
Result
published print
Print: Hello world!
PrintWait: Hello world!
response from printWait: Done printing