Skip to content

Make it possible to inject a dependency into collect function #1837

@slukes

Description

@slukes

We would like to be able to inject a dependency into the collect function in order to be able to monitor resources configured by another nest provider for example a queue.

We have done a POC to work around the fact there seems to be no way to do this as so:

{
      provide: getToken('queue_size_scheduled_queue'),
      inject: [getQueueToken('scheduledQueue')],
      useFactory: (queue) => {
        return getOrCreateMetric('Gauge', {
          name: 'queue_size_scheduled_queue',
          help: 'todo',
          collect: async function () {
            const value = await queue.getWaitingCount();
            this.set(value);
          },
        });
      },
    }

In an ideal world we would like to use an api such as:

makeGaugeProvider({
      name: 'queue_size_scheduled_queue',
      help: 'some help',
      collectInject: [getQueueToken('scheduledQueue')],
      collect: async function (queue) {
        const value = await queue.getWaitingCount();
        this.set(value);
      }
    })

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions