Можно или нужно использовать Schedulers.newElastic? - PullRequest
1 голос
/ 11 октября 2019

Требуется руководство по планированию реакторов.

Я хочу запускать определенные задачи ввода-вывода в фоновом режиме, то есть отправлять электронные письма технической команде. Чтобы сделать его асинхронным, я использую Mono.fromRunnable, подписанный на планировщик.

У меня есть выбор: использовать Schedulers.elastic () или Schedulers.newElastic (). Я предпочитаю последнее, потому что оно позволяет мне дать ему уникальное имя, которое поможет в анализе журналов.

Можно ли создать статическую переменную, например,

Scheduler emailSched = Schedulers.newElastic("email");

и подписаться на мой Monoи чем мне каждый раз создавать новый экземпляр Scheduler?

Я нашел только В чем разница между методами Schedulers.newElastic и Schedulers.elastic? и это не сильно помогло моему вопросу.

1 Ответ

1 голос
/ 11 октября 2019

я должен каждый раз создавать новый экземпляр планировщика?

Нет технической причины, почему вам это нужно, если вы этого не хотите. В большинстве случаев это, вероятно, не имеет значения.

Ключевые различия:

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

В этом случаеВы описываете, что ни один из них на самом деле не влияет на игру.

Отдельно от вышесказанного, обратите внимание, что Schedulers.boundedElastic() теперь является предпочтительным вариантом, особенно для блокировки блокировки ввода-вывода (что, кажется, является тем, чтоты там делаешь.)

...