# sails-hook-bulljs

> A bull wrapper for sails

Latest version **1.0.1** (published 2022-10-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install sails-hook-bulljs
pnpm add sails-hook-bulljs
yarn add sails-hook-bulljs
bun add sails-hook-bulljs
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2022-10-25 |
| First published | 2022-10-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 7.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Daniel Rataj |
| Maintainers | danielrataj |
| Keywords | sails, hook, job, queue, bull |

## Links

- npm: https://www.npmjs.com/package/sails-hook-bulljs
- Repository: https://github.com/danielrataj/sails-hook-bulljs
- Homepage: https://github.com/danielrataj/sails-hook-bulljs#readme
- Issues: https://github.com/danielrataj/sails-hook-bulljs/issues
- npm.io page: https://npm.io/package/sails-hook-bulljs

## Dependencies (2)

- [bull](https://npm.io/package/bull.md) ^4.10.0
- [lodash](https://npm.io/package/lodash.md) ^4.17.21

## Alternatives

- [cron](https://npm.io/package/cron.md) — 4.9M weekly downloads
- [@vercel/queue](https://npm.io/package/@vercel/queue.md) — 731.6K weekly downloads
- [create-sonicjs](https://npm.io/package/create-sonicjs.md) — 1.6K weekly downloads
- [@exellix/jobs-api](https://npm.io/package/@exellix/jobs-api.md) — 941 weekly downloads
- [@forwardimpact/libskill](https://npm.io/package/@forwardimpact/libskill.md) — 575 weekly downloads

## Recent versions

- 1.0.1 (latest) — 2022-10-25
- 1.0.0 — 2022-10-25

## README

# sails-hook-bulljs

Sails.js hook to use [bull] package for handling distributed jobs and messages.

Based on [sails-hook-bull] package (👍).

## Installation

Install it via npm:

```shell
npm install sails-hook-bulljs --save
```

or

```shell
yarn add sails-hook-bulljs
```

## Configuration

You can set some parameters in `config/bulljs.js` to override defaults options for all queues.

```javascript
module.exports.bulljs = {
    redis: {
        port: 6379,
        host: '127.0.0.1',
        db: 0,
        password: ''
    }
}
```

See [bull.queue] for more information.

## Examples

Bull queue definition in `api/queues/my-queue.js`

```javascript
module.exports = {
  queueName: 'my-queue',
  // if redis already defined as an object, url will be ignored
  url: 'redis://127.0.0.1:6379',
  opts: {
    limiter: {
        max: 1000,
        duration: 5000
    }
  },
  /**
   * If "false" it only allows adding object to queue. It does not process a queue or fire events.
   * Great option for backend workers.
   * @return {Boolean} True by default.
   */
  guard: async => {
    return true
  },
  process: async job => {
    // process queue
  },
  onCompleted: async job => {
    // do something when completed
  },
  onRemoved: async job => {
    // do something when job removed
  },
  onError: async err => {
    // do something on error like Redis connection failure etc.
  },
  onFailed: async (job, err) => {
    // do something when process fails
  },
};
```

You can define queues with options:

```javascript
module.exports = {
  queueName: 'my-queue',
  process: {
    name: 'my-super-queue',
    concurrency: 1,
    processor: (job, done) => {
      // do something...
      done();
    }
  }
};
```

Adding jobs to a queue:

```javascript
// api/controllers/someController.js
module.exports = {
  someAction: function(req, res) {
    sails.hooks.bulljs.myQueue.add({
        param: 'value'
    })
  }
};
```

## License

MIT

[bull]: https://optimalbits.github.io/bull/

[bull.queue]: https://github.com/OptimalBits/bull/blob/master/REFERENCE.md#queue

[sails-hook-bull]: https://www.npmjs.com/package/sails-hook-bull

---
_Source: https://npm.io/package/sails-hook-bulljs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
