Микро-задание — это фреймворк для распределённого выполнения задач, который внутри использует пути Rest, совместно используемые различными компонентами Jersey, для доступа к данным.
Подробные документы по разработке доступны на официальном сайте.
Микро-задание состоит из следующих компонентов:
Реестр отвечает за регистрацию различных компонентов в экосистеме. В настоящее время он может быть реализован с использованием различных технологий, таких как memory, zookeeper, redis и consul.
Чтобы создать проект SpringBoot, необходимо использовать инструменты idea или eclipse и добавить следующую зависимость в файл pom.xml:
<dependency>
<groupId>com.github.hengboy</groupId>
<artifactId>spring-boot-starter-registry-memory</artifactId>
<version>{lastVersion}</version>
</dependency>
В каталог ресурсов необходимо добавить файл application.yml со следующей конфигурацией:
server:
port: 9000
hengboy:
job:
registry:
# Способ регистрации узла реестра задач
away: memory
Расписание отвечает за распределение задач между потребителями. При создании задач также учитывается стратегия балансировки нагрузки диспетчера.
Для создания проекта SpringBoot необходимо использовать инструменты idea или eclipse и добавить следующую зависимость в файл pom.xml:
<dependency>
<groupId>com.github.hengboy</groupId>
<artifactId>spring-boot-starter-schedule</artifactId>
<version>{lastVersion}</version>
</dependency>
В каталог ресурсов необходимо добавить файл application.yml со следующей конфигурацией:
server:
port: 8081
hengboy:
job:
registry:
# Сохраняйте соответствие способу регистрации узла реестра задач
away: memory
schedule:
# Тип обработчика очереди задач и хранения журнала задач в памяти
job-store-type: memory
Потребитель выполняет задачи. Задачи определяются и отправляются потребителем, а при вызове диспетчером потребитель автоматически выполняет соответствующий метод логики задачи на основе jobKey.
Для создания проекта SpringBoot необходимо использовать инструменты idea или eclipse и добавить следующую зависимость в файл pom.xml:
<dependency>
<groupId>com.github.hengboy</groupId>
<artifactId>spring-boot-starter-consumer</artifactId>
<version>{lastVersion}</version>
</dependency>
В каталог ресурсов необходимо добавить файл application.yml со следующей конфигурацией:
server:
port: 8082
hengboy:
job:
registry:
# Сохраняйте соответствие способу регистрации узла реестра задач
away: memory
Рассмотрим пример определения простой задачи Job:
@Job(jobExecuteAway = JobExecuteAwayEnum.ONCE)
public class TestJob implements MicroJob {
/**
* logger instance
*/
static Logger logger = LoggerFactory.getLogger(TestJob.class);
@Override
public JobExecuteResult execute(JobExecuteParam jobExecuteParam) throws JobException {
logger.info("Выполнение Key: {}, параметры выполнения: {}", jobExecuteParam.getJobKey(), jobExecuteParam.getJsonParam());
return JobExecuteResult.JOB_EXECUTE_SUCCESS;
}
}
Соответствующий ключ задания — testJob.
Поставщик добавляет зависимости и выполняет задачи, создавая новые задачи после выполнения определённых действий, например, отправки уведомлений по электронной почте после создания заказа.
Для создания проекта SpringBoot необходимо использовать инструменты idea или eclipse и добавить следующую зависимость в файл pom.xml:
<dependency>
<groupId>com.github.hengboy</groupId>
<artifactId>spring-boot-starter-provider</artifactId>
<version>{lastVersion}</version>
</dependency>
В каталог ресурсов необходимо добавить файл application.yml со следующей конфигурацией:
server:
port: 8083
hengboy:
job:
registry:
# Сохраняйте соответствие способу регистрации узла реестра задач
away: memory
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProviderTester {
/**
* Регистрация поставщика задач
*/
@Autowired
private MicroJobProvider microJobProvider;
@Test
public void newJob() {
// Созданная задача выполняется только один раз
microJobProvider.newOnceJob(OnceJobWrapper.Context()
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )