@@ -98,8 +98,8 @@ export class PostgresMessageQueue implements MessageQueue {
98
98
await this . initialize ( ) ;
99
99
const { signal } = options ;
100
100
const poll = async ( ) => {
101
- if ( signal ?. aborted ) return ;
102
- const query = this . #sql`
101
+ while ( ! signal ?. aborted ) {
102
+ const query = this . #sql`
103
103
DELETE FROM ${ this . #sql( this . #tableName) }
104
104
WHERE id = (
105
105
SELECT id
@@ -110,13 +110,17 @@ export class PostgresMessageQueue implements MessageQueue {
110
110
)
111
111
RETURNING message;
112
112
` . execute ( ) ;
113
- const cancel = query . cancel . bind ( query ) ;
114
- signal ?. addEventListener ( "abort" , cancel ) ;
115
- for ( const message of await query ) {
116
- if ( signal ?. aborted ) return ;
117
- await handler ( JSON . parse ( message . message ) ) ;
113
+ const cancel = query . cancel . bind ( query ) ;
114
+ signal ?. addEventListener ( "abort" , cancel ) ;
115
+ let i = 0 ;
116
+ for ( const message of await query ) {
117
+ if ( signal ?. aborted ) return ;
118
+ await handler ( JSON . parse ( message . message ) ) ;
119
+ i ++ ;
120
+ }
121
+ signal ?. removeEventListener ( "abort" , cancel ) ;
122
+ if ( i < 1 ) break ;
118
123
}
119
- signal ?. removeEventListener ( "abort" , cancel ) ;
120
124
} ;
121
125
const timeouts = new Set < ReturnType < typeof setTimeout > > ( ) ;
122
126
const listen = await this . #sql. listen (
0 commit comments