Жизненный цикл брокера
Этот раздел описывает, что происходит, когда брокер запускается и останавливается.
Логика запуска
При запуске брокер пытается установить связь с транспортом. Когда это сделано, он не публикует список локальных сервисов удаленным узлам, потому что он еще не может принять запрос. Она запускает все сервисы (вызовы каждый service started handler). После успешного запуска всех сервисов брокер публикует список локальных сервисов удаленным узлам. Поэтому удаленные узлы отправляют запросы только после того, как все локальные службы будут правильно инициализированы и запущены.
Avoid deadlocksВзаимоблокировки могут возникнуть, когда две службы ждут друг друга. Например: сервис
usersзависит отdependencies: ["posts"]и сервисpostsимеет зависимостьdependencies: ["users"]. Чтобы избежать этого, удалите соответствующую службу из зависимостейdependenciesи используйте вместо этого методthis.waitForServicesв обработчикеstarted.
Логика остановки
Когда вы вызываете broker.stop или останавливаете процесс, во первых брокер публикует пустой список сервисов на удаленные узлы, так что они будут направлять запросы в другие экземпляры сервиса вместо останавливаемого. Далее брокер начинает остановку всех локальных сервисов. После этого транспорт отключается и завершается процесс.
Жизненный цикл сервиса
Этот раздел описывает, что происходит, когда сервис запускается и останавливается, и как вам следует использовать обработчики событий жизненного цикла.
Обработчик created
Этот обработчик запускается, когда создается экземпляр сервиса (например: во время broker.createService или broker.loadService). Вы можете использовать его для создания экземпляров других модулей (например, http сервера, модулей БД) и хранения их в this.
const http = require("http"); |
Это синхронный обработчик событий. Нельзя возвращать
Promiseи нельзя использоватьasync/await.
Обработчик started
Этот обработчик запускается, когда вызывается broker.start и брокер запустил все локальные сервисы. Используйте его для подключения к базе данных, открытия сокетов… и т.д.
module.exports = { |
Это асинхронный обработчик событий. Можно вернуть
Promiseили использоватьasync/await.
Обработчик stopped
Этот обработчик запускается, когда вызывается broker.stop и брокер начинает останавливать все локальные сервисы. Используйте его для закрытия соединений с базой данных, закрытия сокетов…и т.д.
module.exports = { |
Это асинхронный обработчик событий. Можно вернуть
Promiseили использоватьasync/await.
merged обработчик события
Этот обработчик вызывается после объединения схемы сервиса (включая примеси), но до регистрации сервиса. Это означает, что вы можете манипулировать объединённой схемой сервиса до её обработки.
// posts.service.js |