@rpcbase/server 0.174.0 → 0.176.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpcbase/server",
3
- "version": "0.174.0",
3
+ "version": "0.176.0",
4
4
  "license": "SSPL-1.0",
5
5
  "main": "./index.js",
6
6
  "bin": {
@@ -18,7 +18,11 @@ const dispatch_queue = (queue, model_name, op, doc) => {
18
18
 
19
19
  // console.log("handler_name", handler_name)
20
20
 
21
- queue.add(handler_name, {doc})
21
+ queue.add(handler_name, {doc}, {
22
+ jobId: `${op}-${doc._id}`,
23
+ removeOnComplete: true,
24
+ removeOnFail: true,
25
+ })
22
26
  }
23
27
 
24
28
 
package/queue/index.js CHANGED
@@ -5,13 +5,22 @@ const {WORKER_QUEUE_PORT, CONTAINER_MODE} = process.env
5
5
  const hostname = CONTAINER_MODE === "native" ? "127.0.0.1" : "worker-queue"
6
6
  const worker_queue_url = `redis://${hostname}:${WORKER_QUEUE_PORT}`
7
7
 
8
+ const QUEUE_NAME = "worker-queue"
9
+
10
+
8
11
  const tasks_list = Object.create(null)
9
12
 
10
13
  let worker_queue
11
14
 
15
+ const get_instance = () => {
16
+ if (!worker_queue) worker_queue = new Queue(QUEUE_NAME, worker_queue_url)
17
+ return worker_queue
18
+ }
19
+
20
+
12
21
  const worker_add = async(task_name, payload, options) => {
13
22
  if (!worker_queue) {
14
- worker_queue = new Queue("worker-queue", worker_queue_url)
23
+ worker_queue = new Queue(QUEUE_NAME, worker_queue_url)
15
24
  }
16
25
  const res = await worker_queue.add({task_name, payload}, options)
17
26
  console.log("worker_add:created task:", task_name, res.id)
@@ -20,6 +29,10 @@ const worker_add = async(task_name, payload, options) => {
20
29
  return res
21
30
  }
22
31
 
32
+ const get_job = async(job_id) => {
33
+ const queue = get_instance()
34
+ return queue.getJob(job_id)
35
+ }
23
36
 
24
37
  const register_task = (name, fn) => {
25
38
  // append module to tasks list
@@ -31,7 +44,7 @@ const get_tasks = () => tasks_list
31
44
  const start_worker = async() => {
32
45
  console.log("start worker queue", worker_queue_url)
33
46
 
34
- worker_queue = new Queue("worker-queue", worker_queue_url)
47
+ worker_queue = new Queue(QUEUE_NAME, worker_queue_url)
35
48
 
36
49
  // error handler
37
50
  worker_queue.on("error", (err) => {
@@ -48,7 +61,9 @@ const start_worker = async() => {
48
61
  })
49
62
 
50
63
  // processor function
51
- worker_queue.process(async(job) => {
64
+ // default concurrency is 2, in practice we will implement this with multiple workers
65
+ // to take advantage of multi cpu machines
66
+ worker_queue.process(2, async(job) => {
52
67
  try {
53
68
  const {task_name, payload} = job.data
54
69
 
@@ -67,11 +82,6 @@ const start_worker = async() => {
67
82
  }
68
83
 
69
84
 
70
- const get_instance = () => {
71
- if (!worker_queue) worker_queue = new Queue("worker-queue", worker_queue_url)
72
- return worker_queue
73
- }
74
-
75
85
  // TMP used to create additional queues, should be implemented with a better API in the future
76
86
  const get_url = () => {
77
87
  return worker_queue_url
@@ -81,6 +91,7 @@ module.exports = {
81
91
  start: start_worker,
82
92
  register_task,
83
93
  get_tasks,
94
+ get_job,
84
95
  add: worker_add,
85
96
  instance: get_instance,
86
97
  get_url,