целевые функции архитектуры перьев - PullRequest
0 голосов
/ 13 января 2020

Я работаю над проектом с Feathers JS, где я должен реализовать систему планировщика задач / cron. Каждая задача - это функция с определенным интерфейсом (в основном, методом run ()), которая передается объекту приложения, поэтому из задачи могут вызываться различные службы. Каждая задача может быть вызвана только на стороне сервера. Хорошим примером для такой задачи является получение почасовых отчетов из другого API или запуск ежедневного пакета здоровья.

Это в основном работает, но в настоящее время мне нужно зарегистрировать каждую задачу как службу, чтобы иметь единый способ позвонить им. Моя служба cronjob вызывает их через app.service(serviceVarFromJob)[methodVarFromJob].apply() Затем я использую disallow('external') перехватчики, чтобы предотвратить использование службы внешними провайдерами.

Это кажется немного сложным и, вероятно, не так "перышко", как это делается. Есть ли какой-то архитектурный совет о том, как зарегистрировать функции в перьях, которые не используются в качестве службы, но должны выполнять внутренние вызовы службы?

Например, я могу зарегистрироваться и вызвать службу, подобную этой:

app.use("/myservice", new MyService(app));
app.service("myservice").create(..)

Есть ли способ расширить объект приложения для хранения ссылки на все определенные функции, которые я регистрирую, например:

app.registerFunction("myTask", new MyTask(app));
const task = app.task("mytask");
await task.run()

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

...