Вызов сценария nodejs kafka из приложения Angular 8 - PullRequest
0 голосов
/ 23 сентября 2019

Как вызвать скрипт потребителя nodejs kafka из компонента Angular.Я могу запустить тот же скрипт в терминале, используя "npm filename.js", но он выдает ошибку при вызове этого из компонента Angular.

1 Ответ

0 голосов
/ 23 сентября 2019

угловой компонент запускается на клиенте , скрипт kafka запускается на сервере .Вам нужно создать конечную точку прокси для вызова скрипта.В зависимости от того, какую серверную часть Web API Framework вы используете, это будет сделано разными способами.

Чтобы помочь вам понять это далее, если вы используете express.js, вам понадобится конечная точка для запуска вызова (это должна быть POST конечная точка):

// POST method route
app.post('/triggerKafka', function (req, res) {
  const exec = require('child_process').exec, child;
  const testscript = exec('bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic yourTopic --from-beginning');

  testscript.stdout.on('data', function(data){
    console.log(data);
    // sendBackInfo();
  });

  testscript.stderr.on('data', function(data){
    console.log(data);
    // triggerErrorStuff();
  });
})

Теперь я должен сказать, что это, вероятно, не тот способ, которым вы хотите это сделать.Во-первых, вы не хотите, чтобы люди, находящиеся вне вашего контроля, могли запускать и останавливать прослушивание Кафки.

Вы должны попытаться настроить своего потребителя Kafka при запуске вашего веб-приложения (на стороне сервера);и предоставьте механизм для подключения к нему аналогично описанному выше - проксирование вызовов через конечную точку API, которую вы настроили.

Чтобы запустить Kafka при запуске вашего веб-приложения;вам нужно указать правильную информацию при запуске сервера веб-приложений node.js.В вашем package.json, если у вас есть раздел «scripts», вы можете добавить следующее:

  "scripts" : { 
    "start" : "<whateveryouhavenow>.sh && npm filename.js"
  } 

Важной частью здесь является && npmfile.js;это говорит о том, чтобы запустить вашу команду, а также команду, которая предшествовала ему.Есть и другие варианты здесь , но я предоставил только один.

В зависимости от того, какую серверную среду вы используете и какой инструмент для запуска задач вы используете, он будет отличаться (будь то нпм, глоток, хрюканье или что-то еще).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...