# Telemetry

Doddle emits certain events when certain actions happen in the system. You can subscribe to these events.

### Events

| Event                 | Description                                              |
| --------------------- | -------------------------------------------------------- |
| JobCompletedEvent     | Fired when a job is executed successfully                |
| JobCreatedEvent       | Fired when a job has been created                        |
| JobEnqueuedEvent      | Fired when a job has been enqueued ready to be processed |
| JobExceptionEvent     | Fired when a job throws an exception                     |
| JobExecutingEvent     | Fired when a job starts executing                        |
| JobFailedEvent        | Fired when a job fails                                   |
| JobSelectedEvent      | Fired when a job has been picked                         |
| CronJobCreatedEvent   | Fired when a job is created                              |
| CronJobScheduledEvent | Fired when a cron job is scheduled                       |
| CronJobUpdatedEvent   | Fired when a cron job is updated                         |
| QueueCreatedEvent     | Fired when a queue is created                            |
| QueueUpdatedEvent     | Fired when a queue is updated                            |

### Configuration

During the client configuration bootstrapping stage, subscribe to telemetry events like follows:

```java
builder.telemetry(new TelemetrySubscriber() {
    @Override
    public void handle(final TelemetryEvent event) {
        logger.info("Received telemetry event: {}", event.name());
    }

    /**
     * Only subscribe to the events you want to receive
     */
    @Override
    public boolean supports(final String name) {
        return asList("job.selected", "job.created").contains(name);
    }
});
```
