Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. "use strict";
  2. var amqplib = require("amqplib");
  3. var format = require("string-format");
  4.  
  5. var DEVICE_SETTINGS = {
  6. MODEL: "6‐diesel_generator_schema",
  7. INSTANCE_NAME: "test_dg",
  8. DEVICE_ID: "56090580e7e466125aa1c0a5",
  9. INSTRUMENT: "generator",
  10. WRITER: "power",
  11. TYPE: "boolean",
  12. };
  13. var API_DATA = {
  14. HOST: "localhost",
  15. PASSWORD: "anypass",
  16. USERNAME: format("{MODEL}/{INSTANCE_NAME}", DEVICE_SETTINGS).replace('/', '%2F')
  17. };
  18. var binding_key = format("miimetiq.ds.writer.{TYPE}.{MODEL}." +
  19. "{DEVICE_ID}.{INSTRUMENT}.{WRITER}", DEVICE_SETTINGS);
  20. var amqp_url = format("amqp://{USERNAME}:{PASSWORD}@{HOST}", API_DATA);
  21. var channel = null;
  22.  
  23.  
  24. amqplib.connect(amqp_url).then(createChanel);
  25.  
  26. function createChanel(conn) {
  27. conn.createChannel().then(createBindQueue);
  28. };
  29.  
  30. function createBindQueue(ch) {
  31. channel = ch;
  32. ch.assertQueue().then(function (ok) {
  33. ch.bindQueue(ok.queue, "miimetiq", binding_key
  34. ).then(startConsuming);
  35. });
  36. }
  37.  
  38.  
  39. function startConsuming(ok) {
  40. channel.consume(ok.queue, processMessage).then(
  41. function () {
  42. console.log(" [*] Waiting for messages. To exit press CTRL+C");
  43. }
  44. )
  45. }
  46.  
  47. function processMessage(msg) {
  48. console.log(format(" [x] {}:{}", msg.fields.routingKey, msg.properties.correlationId));
  49. var task_id = msg.properties.correlationId;
  50. var answer_msg = JSON.stringify({
  51. status: "SUCCESS",
  52. result: {status: "OK"},
  53. task_id: task_id
  54. });
  55. publishToCelery(answer_msg, task_id.replace(/-/g, ''))
  56. }
  57.  
  58. function publishToCelery(msg, task_id) {
  59. channel.assertQueue(task_id).then(function (ok) {
  60. channel.bindQueue(task_id, "celeryresults", task_id).then(function (ok) {
  61. channel.publish("celeryresults",
  62. task_id,
  63. new Buffer(msg),
  64. {contentType: "application/json"});
  65. });
  66. });
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement