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

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

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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

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

Толкование существительных:

  • потребитель — узел потребления задач;
  • расписание — планировщик задач;
  • поставщик — производитель задач;
  • реестр — реестр задач.

Реестр

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

server:
   port: 9000
hengboy:
  job:
    registry:
      # ask Registry Node Registration
      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 в каталог ресурсов resources следующим образом:

server:
   port: 8081
hengboy:
  job:
    registry:
      # Maintain consistency with task registry node registration
      away: memory
    schedule:
      # Memory Scheduler handles task queues and storage of task logs
      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 в каталог ресурсов resources следующим образом:

server:
   port: 8082
hengboy:
  job:
    registry:
      # Maintain consistency with task registry node registration
      away: memory

Пример определения JOB

Давайте определим простую работу 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)**

logger.info("Ключ: {} Параметр: {}", jobExecuteParam.getJobKey(), jobExecuteParam.getJsonParam());
return JobExecuteResult.JOB_EXECUTE_SUCCESS;
}

**Провайдер**

Бизнес-сторона добавляет зависимости и выполняет задачи по созданию вызовов MicroJobProvider.newXxxJob, такие как операция уведомления «Отправить почту» после создания заказа.

Создайте проект SpringBoot с помощью инструментов idea и eclipse и добавьте следующие зависимости в файл pom.xml.
```xml
<dependency>
    <groupId>com.github.hengboy</groupId>
    <artifactId>spring-boot-starter-provider</artifactId>
    <version>{lastVersion}</version>
</dependency>

Добавьте файл конфигурации application.yml в каталог ресурсов resources следующим образом:

server:
  port: 8083
hengboy:
  job:
    registry:
      # Поддерживать согласованность с регистрацией узла реестра задач
      away: memory

Пример выполнения JOB

@RunWith(SpringRunner.class)
@SpringBootTest
public class ProviderTester {
    /**
     * Зарегистрированный провайдер задач
     */
    @Autowired
    private MicroJobProvider microJobProvider;

    @Test
    public void newJob() {
        // Созданные задачи выполняются только один раз
        microJobProvider.newOnceJob(OnceJobWrapper.Context()
                // JobKey, который соответствует задачам, определённым в потребителе, по умолчанию — имена классов в нижнем регистре
                .jobKey("testJob")
                // Настраиваемый ключ очереди задач, можно точно определить местоположение задач и выполнять операции паузы, удаления и другие операции
                .jobQueueKey(UUID.randomUUID().toString())
                // Параметры, параметры любого типа, когда потребитель потребляет, преобразуются в строки JSON
                .param(new HashMap() {
                    {
                        put("name", "admin");
                    }
                })
                .wrapper());
    }
}

Поток тестирования

  1. Запустите реестр задач.
  2. Запустите центр планирования задач.
  3. Запустите узел потребителя задач.
  4. Выполните метод модульного теста #newJob провайдера тестов.

Папки

​```
.
├── micro-job-autoconfigure
├── micro-job-dependencies
├── micro-job-samples
│   ├── sample-consumer
│   ├── sample-provider
│   ├── sample-registry-consul
│   ├── sample-registry-memory
│   ├── sample-registry-redis
│   ├── sample-registry-zookeeper
│   ├── sample-schedule
│   ├── pom.xml
│   └── README.md
├── micro-job-starters
│   ├── spring-boot-starter
│   ├── spring-boot-starter-provider
│   ├── spring-boot-starter-registry-consul
│   ├── spring-boot-starter-registry-memory
│   ├── spring-boot-starter-registry-redis
│   ├── spring-boot-starter-registry-zookeeper
│   ├── spring-boot-starter-schedule
│   └── pom.xml
├── .travis.yml
├── LICENSE
├── pom.xml
└── README.md
​```

Лицензия

Apache License

Комментарии ( 0 )

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

Введение

Micro-job — это распределённая среда выполнения задач, которая используется для распределения задач и их потребления в условиях балансировки нагрузки кластера. Потребители задач определяют задачи, а планировщик автоматически сообщает о задачах и выбирает различные потребительские узлы для потребления задач в соответствии со стратегией баланси... Развернуть Свернуть
Apache-2.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