уведомить метод действия контроллера от другого независимого обработчика в течение определенного времени - PullRequest
0 голосов
/ 18 декабря 2018

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

Всякий раз, когда я получаю вызов API на одной конкретной конечной точке

  • Мне нужно подождать (2-5 секунд в зависимости от необходимости) ответа от устройства на другой обработчик (обработчик mqtt => https://github.com/gausby/tortoise)
  • , этот обработчик должен как-то уведомить меня, я получил этосообщение (если обработчик получил сообщение в течение этого времени) для идентификатора конкретного устройства
  • , если устройство соответствует и метод действия контроллера получает уведомление, мы отправляем ответ об успешном выполнении, в противном случае мы отправляем ответ об ошибке
  • Любое сообщение, полученное ранееили после того, как время ожидания не имеет значения (просто считайте, что оно отписалось)

Я не совсем уверен, каков наилучший способ достичь вышеуказанного требования. Любая помощь приветствуется, спасибо

1 Ответ

0 голосов
/ 18 декабря 2018

spawn() процесс для первого обработчика.В первом обработчике spawn() другой процесс для второго обработчика, передающий self() в качестве одного из аргументов.Затем введите предложение receive с интервалом ожидания 2-5 секунд, указанным в after clause.Пусть второй обработчик send() отправит сообщение первому обработчику с данными, которые получает второй обработчик.

Если значение receive в первом обработчике истекло, то делайте все, что вы хотите сделать в *Предложение 1010 *, если receive читает сообщение до истечения времени ожидания, то делайте все, что вам нужно сделать с данными.

Затем, если вы позволите процессу, выполняющему первый обработчик, умереть, вы выиграетене нужно беспокоиться о нежелательных сообщениях в его почтовом ящике.

...