summaryrefslogtreecommitdiff
path: root/worker.js
diff options
context:
space:
mode:
Diffstat (limited to 'worker.js')
-rw-r--r--worker.js23
1 files changed, 17 insertions, 6 deletions
diff --git a/worker.js b/worker.js
index 11da36f..a31f97d 100644
--- a/worker.js
+++ b/worker.js
@@ -3,7 +3,8 @@
'use strict';
var amqp = require("amqplib"),
- Seq = require("sequelize");
+ Seq = require("sequelize"),
+ sleep = require("sleep-promise");
var RABBITMQ_URI = process.env.RABBITMQ_URI || "amqp://localhost",
DATABASE_URI = process.env.DATABASE_URI || "sqlite:///db.sqlite",
@@ -11,17 +12,27 @@ var RABBITMQ_URI = process.env.RABBITMQ_URI || "amqp://localhost",
IDLE_TIMEOUT = process.env.PROCESSOR_IDLETIMEOUT || 500; // ms
(async () => {
- let seq = new Seq(DATABASE_URI, { logging: () => {} }),
- model = require("../orm/model")(seq, Seq),
- rabbit = await amqp.connect(RABBITMQ_URI),
- ch = await rabbit.createChannel();
+ let seq, model, rabbit, ch;
+
+ while (true) {
+ try {
+ seq = new Seq(DATABASE_URI, { logging: () => {} }),
+ rabbit = await amqp.connect(RABBITMQ_URI),
+ ch = await rabbit.createChannel();
+ await ch.assertQueue("compile", {durable: true});
+ break;
+ } catch (err) {
+ console.error(err);
+ await sleep(5000);
+ }
+ }
+ model = require("../orm/model")(seq, Seq);
let queue = [],
timer = undefined;
await seq.sync();
- await ch.assertQueue("compile", {durable: true});
// as long as the queue is filled, msg are not ACKed
// server sends as long as there are less than `prefetch` unACKed
await ch.prefetch(BATCHSIZE);