@@ -24,6 +24,10 @@ export type ConsumerCallback = (
2424 properties : MessageProperties
2525) => Promise < void > ;
2626
27+ export type ListenOnOptions = {
28+ prefetch ?: number ;
29+ } ;
30+
2731export interface MessageBroker {
2832 sendMessage ( queue : Queue , type : string , message : string ) : Promise < void > ;
2933 sendBroadcast ( queue : Queue , type : string , message : string ) : Promise < void > ;
@@ -36,7 +40,11 @@ export interface MessageBroker {
3640 queueName : string ,
3741 exchangeName : string
3842 ) : Promise < void > ;
39- listenOn ( queue : Queue , cb : ConsumerCallback ) : Promise < void > ;
43+ listenOn (
44+ queue : Queue ,
45+ cb : ConsumerCallback ,
46+ options ?: ListenOnOptions
47+ ) : Promise < void > ;
4048 listenOnBroadcast ( cb : ConsumerCallback ) : void ;
4149}
4250
@@ -110,12 +118,16 @@ export class RabbitMQMessageBroker implements MessageBroker {
110118 }
111119 }
112120
113- async listenOn ( queue : Queue , cb : ConsumerCallback ) {
121+ async listenOn (
122+ queue : Queue ,
123+ cb : ConsumerCallback ,
124+ options : ListenOnOptions = { }
125+ ) {
114126 if ( ! this . queueConsumers . has ( queue ) ) {
115127 this . queueConsumers . set ( queue , [ ] ) ;
116128 }
117129
118- this . queueConsumers . get ( queue ) ?. push ( new Consumer ( cb ) ) ;
130+ this . queueConsumers . get ( queue ) ?. push ( new Consumer ( cb , options ) ) ;
119131
120132 if ( this . channel ) {
121133 await this . registerConsumers ( ) ;
@@ -385,6 +397,10 @@ export class RabbitMQMessageBroker implements MessageBroker {
385397 consumer . register ( ) ;
386398 }
387399
400+ if ( consumer . options . prefetch !== undefined ) {
401+ await this . channel . prefetch ( consumer . options . prefetch , false ) ;
402+ }
403+
388404 await this . channel
389405 . consume (
390406 queue ,
0 commit comments