1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hengboy-spring-boot-micro-job

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 6.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 13:35 7ef4f98

Микро-задание — это фреймворк для распределённого выполнения задач, который внутри использует пути Rest, совместно используемые различными компонентами Jersey, для доступа к данным.

Подробные документы по разработке доступны на официальном сайте.

Микро-задание состоит из следующих компонентов:

  • Потребитель (consumer) — узел, выполняющий задачи.
  • Расписание (schedule) — диспетчер задач, который распределяет задачи между потребителями в соответствии с их нагрузкой.
  • Поставщик (provider) — создаёт задачи и отправляет их на выполнение.
  • Реестр (registry) — центр регистрации задач. Может быть реализован различными способами, такими как memory, zookeeper, redis или consul.

Реестр (registry)

Реестр отвечает за регистрацию различных компонентов в экосистеме. В настоящее время он может быть реализован с использованием различных технологий, таких как 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

Расписание (schedule)

Расписание отвечает за распределение задач между потребителями. При создании задач также учитывается стратегия балансировки нагрузки диспетчера.

Для создания проекта 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  

Потребитель (consumer)

Потребитель выполняет задачи. Задачи определяются и отправляются потребителем, а при вызове диспетчером потребитель автоматически выполняет соответствующий метод логики задачи на основе 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.

Поставщик (provider)

Поставщик добавляет зависимости и выполняет задачи, создавая новые задачи после выполнения определённых действий, например, отправки уведомлений по электронной почте после создания заказа.

Для создания проекта 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hengboy-spring-boot-micro-job.git
git@api.gitlife.ru:oschina-mirror/hengboy-spring-boot-micro-job.git
oschina-mirror
hengboy-spring-boot-micro-job
hengboy-spring-boot-micro-job
master