diff --git a/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts b/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts index aa626970a8..a48e9707b1 100644 --- a/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts +++ b/packages/nodes-base/nodes/RabbitMQ/GenericFunctions.ts @@ -76,6 +76,19 @@ export async function rabbitmqConnectQueue( return new Promise(async (resolve, reject) => { try { await channel.assertQueue(queue, options); + + if (options.binding && ((options.binding as IDataObject).bindings! as IDataObject[]).length) { + ((options.binding as IDataObject).bindings as IDataObject[]).forEach( + async (binding: IDataObject) => { + await channel.bindQueue( + queue, + binding.exchange as string, + binding.routingKey as string, + ); + }, + ); + } + resolve(channel); } catch (error) { reject(error); diff --git a/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.ts b/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.ts index 09781ac3fa..7d8dd7c398 100644 --- a/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.ts +++ b/packages/nodes-base/nodes/RabbitMQ/RabbitMQTrigger.node.ts @@ -139,6 +139,39 @@ export class RabbitMQTrigger implements INodeType { }, description: 'Max number of executions at a time. Use -1 for no limit.', }, + { + displayName: 'Binding', + name: 'binding', + placeholder: 'Add Binding', + description: 'Add binding to queu', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + options: [ + { + name: 'bindings', + displayName: 'Binding', + values: [ + { + displayName: 'Exchange', + name: 'exchange', + type: 'string', + default: '', + placeholder: 'exchange', + }, + { + displayName: 'RoutingKey', + name: 'routingKey', + type: 'string', + default: '', + placeholder: 'routing-key', + }, + ], + }, + ], + }, ...rabbitDefaultOptions, ].sort((a, b) => { if (