{"_id":"@d0whc3r/moleculer-bee-queue","_rev":"1-7f5f9226f9d6c3535f0b9923d9fa2238","name":"@d0whc3r/moleculer-bee-queue","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@d0whc3r/moleculer-bee-queue","version":"1.0.0","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/d0whc3r/moleculer-addons.git","directory":"packages/moleculer-bee-queue"},"homepage":"https://github.com/d0whc3r/moleculer-addons/tree/master/packages/moleculer-bee-queue#readme","author":{"name":"d0whc3r"},"license":"MIT","keywords":["microservice","moleculer","bee-queue","queues","tasks","jobs","messages"],"scripts":{"example":"ts-node example/index.ts","example:dev":"dotenv -e ./env/development.env -- yarn example dev","example:prod":"dotenv -e ./env/production.env -- yarn example prod","clean":"rm -fr yarn.lock package-lock.json dist node_modules","build":"yarn build:clean && run-p build:dts build:rollup","build:clean":"rimraf dist","build:rollup":"dotenv -e ./env/production.env -- rollup -c","build:rollup:dev":"dotenv -e ./env/development.env -- rollup -c","build:dts":"dts-bundle-generator --config dts-bundle-generator.json","test":"echo no tests for now","test:old":"jest -i","test:coverage":"yarn test --coverage"},"peerDependencies":{"moleculer":"^0.14.16"},"dependencies":{"bee-queue":"^1.4.0","redis":"^3.1.2"},"devDependencies":{"@rollup/plugin-node-resolve":"13.0.4","@types/jest":"27.0.1","@types/redis":"2.8.31","builtin-modules":"3.2.0","dotenv":"10.0.0","dotenv-cli":"4.0.0","esbuild":"0.12.22","jest":"27.0.6","jest-chain":"1.1.5","jest-cli":"27.0.6","jest-extended":"0.11.5","jest-junit":"12.2.0","jest-sonar-reporter":"2.0.0","moleculer":"0.14.16","rollup":"2.56.3","rollup-plugin-auto-external":"2.0.0","rollup-plugin-esbuild":"4.5.0","rollup-plugin-node-builtins":"2.1.2","ts-jest":"27.0.5","ts-node":"10.2.1","typescript":"4.3.5"},"engines":{"node":">= 8.x.x"},"jestSonar":{"reportPath":"../../coverage","reportFile":"slack-test-report.xml"},"jest-junit":{"outputDirectory":"../../coverage","outputName":"slack-junit.xml"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"description":"![Moleculer logo](http://moleculer.services/images/banner.png)","bugs":{"url":"https://github.com/d0whc3r/moleculer-addons/issues"},"_id":"@d0whc3r/moleculer-bee-queue@1.0.0","_nodeVersion":"14.17.5","_npmVersion":"7.21.0","dist":{"integrity":"sha512-FxiWKpLYrKfjWwdScUHjyXdVwLXo2jHcb+LEpwU6/xukhoAlfMNySWvj/Cs1x7htq/nN3+s4xn9dhGzFgna7mQ==","shasum":"9c3e2cfb7c6dc1478592e8bd54bcd79ea76e4a43","tarball":"https://registry.npmjs.org/@d0whc3r/moleculer-bee-queue/-/moleculer-bee-queue-1.0.0.tgz","fileCount":6,"unpackedSize":15854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJhf1CRA9TVsSAnZWagAAWvgQAIIVv0JvTBwdTkaDtQk1\nZxeZQwjv9r8bznzfxYUnsUyiQ4GQjvS4rkqXkPuUjC9ZY9sqVYlUr4eF5NQK\nWv+j7DJmXG2AtbSV6E1uHzLMJHFvS5RVpqWgf24yhvzTlO2hlGlVmY0hnMHX\n73EP82xvOSmU5c5g5TAoUyMRRSe1vRT/PlksFKzm/nWvrlQsJAM6Pxr/9LQb\necZDCHLXxaFle0Ysa8b3cynZtcAy8+br5reSQWyV64uN6WftfUXme6wYw0uK\n3tjvD4T9exVIvsS/DDlZxmfLmG3Q6JLorj02oiFX87AJUTZCSEm7MzRWGpND\npbU9K2x/cy3Vtqx/qy472dUG2hUX2pe3gPdL3vzMKRlLCBUt+BO53yxIwoIM\nY5v3drPzlCAKIZu5pKPBlCk1CflZDA8PcHoMdUPMFxn0p3ZwaY8etExuVwBR\nZhwGFXDlyAuOwfPTjb+rWnxu9TKELOmyMmXiqpPs6KjLZO9kZnMdMsuB6NIY\nt3Z0Thwtd4dQby/94WIu5OEeh5/N/LqUwVo5fooQsZi1nUXRuXwhYct+9nsc\nRl/NvbMUxfSBrLS8NPmIsDbHZJw8miG8BFZWboPC8Y40vZ2L6HwbDcwxxUwp\nXGcjc2l4UsRqgBPveCnNS5OkgO9KKtZsOJlvzgbRFsbt3RdVXtEKSH2mlMtV\nkKeK\r\n=EwxL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2Fx4/0359jhZTfIIr4Lv2r8X6vohE8m82yRoy59kIMAiEAszTH904UxiKo5Ytv0HFIGMOqXDs/+6WthqL3Xz0EmCw="}]},"_npmUser":{"name":"d0whc3r","email":"d0whc3r@gmail.com"},"directories":{},"maintainers":[{"name":"d0whc3r","email":"d0whc3r@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/moleculer-bee-queue_1.0.0_1629886452918_0.30595021715454895"},"_hasShrinkwrap":false}},"time":{"created":"2021-08-25T10:14:12.848Z","1.0.0":"2021-08-25T10:14:13.028Z","modified":"2022-04-05T02:28:51.638Z"},"maintainers":[{"name":"d0whc3r","email":"d0whc3r@gmail.com"}],"description":"![Moleculer logo](http://moleculer.services/images/banner.png)","homepage":"https://github.com/d0whc3r/moleculer-addons/tree/master/packages/moleculer-bee-queue#readme","keywords":["microservice","moleculer","bee-queue","queues","tasks","jobs","messages"],"repository":{"type":"git","url":"git+https://github.com/d0whc3r/moleculer-addons.git","directory":"packages/moleculer-bee-queue"},"author":{"name":"d0whc3r"},"bugs":{"url":"https://github.com/d0whc3r/moleculer-addons/issues"},"license":"MIT","readme":"![Moleculer logo](http://moleculer.services/images/banner.png)\n\n# moleculer-bee-queue [![NPM version](https://img.shields.io/npm/v/@d0whc3r/moleculer-bee-queue.svg)](https://www.npmjs.com/package/@d0whc3r/moleculer-bee-queue)\n\nTask queue mixin for [Bee-Queue](https://github.com/bee-queue/bee-queue)\n\n## Install\n\n```bash\n$ npm install @d0whc3r/moleculer-bee-queue --save\n```\n\n## Usage\n\n> This addon manages job/task queue using bee-queue\n\n### Create queue worker service\n\n```js\nlet { ServiceBroker } = require(\"moleculer\");\nlet { QueueService } = require(\"@d0whc3r/moleculer-bee-queue\");\n\n// Create broker\nlet broker = new ServiceBroker({ logger: console });\n\n// Load my service\nbroker.createService({\n    name: \"task-worker\",\n    mixins: [QueueService],\n    queues: {\n        \"mail.send\"(job) {\n            this.logger.info(\"New job received!\", job.data);\n            job.reportProgress(10);\n\n            return this.Promise.resolve({\n                done: true,\n                id: job.data.id,\n                worker: process.pid\n            });\n        },\n        \"mail.send.alt\": {\n            ...(queue settings)\nhandler(job)\n{\n    this.logger.info(\"New job received!\", job.data);\n    job.reportProgress(10);\n\n    return this.Promise.resolve({\n        done: true,\n        id: job.data.id,\n        worker: process.pid\n    });\n}\n}\n}\n})\n;\n```\n\n### Create job in service\n\n```js\nconst { ServiceBroker } = require(\"moleculer\");\nconst { QueueService } = require(\"@d0whc3r/moleculer-bee-queue\");\n\n// Create broker\nconst broker = new ServiceBroker({ logger: console });\n\n// Load my service\nbroker.createService({\n    name: \"job-maker\",\n    mixins: [QueueService],\n    methods: {\n        sendEmail(data) {\n            const job = this.createJob(\"mail.send\", payload);\n\n            job.on(\"progress\", (progress) => {\n                this.logger.info(`Job #${job.id} progress is ${progress}%`);\n            });\n\n            job.on(\"succeeded\", (res) => {\n                this.logger.info(`Job #${job.id} completed!. Result:`, res);\n            });\n\n            job.retries(2).save();\n        }\n    }\n});\n```\n\n## With decorators\n\n`@Queue` decorator is implemented and could be used like (using decorators\nfrom [@d0whc3r/moleculer-decorators](https://github.com/d0whc3r/moleculer-decorators))\n\n### Create queue worker service\n\n```ts\nconst moleculer = require('moleculer');\nconst { Service } = require('moleculer-decorators');\nconst { QueueService, Queue } = require(\"@d0whc3r/moleculer-bee-queue\");\nconst broker = new moleculer.ServiceBroker({\n    logger: console,\n    logLevel: \"debug\",\n});\n\n@Service({\n    name: \"task-worker\",\n    mixins: [QueueService]\n})\nclass ServiceName extends moleculer.Service {\n    @Queue(\"mail.send\", {\n        ...(optional queue settings)\n    })\n    mailSend(job) {\n        this.logger.info(\"New job received!\", job.data);\n        job.reportProgress(10);\n\n        return this.Promise.resolve({\n            done: true,\n            id: job.data.id,\n            worker: process.pid\n        });\n    }\n}\n\nbroker.createService(ServiceName);\nbroker.start();\n```\n\n### Create job in service\n\n```ts\nconst moleculer = require('moleculer');\nconst { Service, Method } = require('moleculer-decorators');\nconst { QueueService, Queue } = require(\"@d0whc3r/moleculer-bee-queue\");\nconst broker = new moleculer.ServiceBroker({\n    logger: console,\n    logLevel: \"debug\",\n});\n\n@Service({\n    name: \"job-maker\",\n    mixins: [QueueService]\n})\nclass ServiceName extends moleculer.Service {\n    @Method\n    sendEmail(data) {\n        const job = this.createJob(\"mail.send\", payload);\n\n        job.on(\"progress\", (progress) => {\n            this.logger.info(`Job #${job.id} progress is ${progress}%`);\n        });\n\n        job.on(\"succeeded\", (res) => {\n            this.logger.info(`Job #${job.id} completed!. Result:`, res);\n        });\n\n        job.retries(2).save();\n    }\n}\n\nbroker.createService(ServiceName);\nbroker.start();\n```\n\n## Settings\n\nFor all optional queue settings check [bee-queue documentation](https://github.com/bee-queue/bee-queue#settings)\n\n## Test\n\n```\n$ npm test\n```\n\n## License\n\nThe project is available under the [MIT license](https://tldrlegal.com/license/mit-license).\n","readmeFilename":"README.md"}