!359 [需求认领] 对接 powerjob 实现分布式任务调度 集成方式参考框架内 xxl-job
* 对接powerjob替换xxl-job实现分布式任务调度
已添加21个文件
已删除174个文件
已修改14个文件
| | |
| | | | åºåå | éç¨ Jackson Spring宿¹å
ç½®åºåå é è°±!!! | éç¨ fastjson bugjson è¿è¿é»å | |
| | | | åå¸å¼å¹ç | åèç¾å¢GTISé²éç³»ç»ç®åå®ç°(ç»èå¯çææ¡£) | æå¨ç¼å注解åºäºaopå®ç° | |
| | | | åå¸å¼é | éç¨ Lock4j åºå±åºäº Redisson | æ | |
| | | | åå¸å¼ä»»å¡è°åº¦ | éç¨ Xxl-Job å¤©çæ¯æåå¸å¼ ç»ä¸ç管çä¸å¿ | éç¨ Quartz åºäºæ°æ®åºéæ§è½å·® é群éè¦åå¾å¤é
ç½®ä¸æ¹é | |
| | | | åå¸å¼ä»»å¡è°åº¦ | éç¨ PowerJob å¤©çæ¯æåå¸å¼ ç»ä¸ç管çä¸å¿ | éç¨ Quartz åºäºæ°æ®åºéæ§è½å·® é群éè¦åå¾å¤é
ç½®ä¸æ¹é | |
| | | | æä»¶åå¨ | éç¨ Minio åå¸å¼æä»¶åå¨ å¤©çæ¯æå¤æºãå¤ç¡¬çãå¤åçãå¤å¯æ¬åå¨<br/>æ¯ææé管ç å®å
¨å¯é æä»¶å¯å å¯åå¨ | éç¨ æ¬æºæä»¶åå¨ æä»¶è£¸æ¼ æä¸¢å¤±æ³æ¼ 䏿¯æé群æåç¹æåº | |
| | | | äºåå¨ | éç¨ AWS S3 å议客æ·ç«¯ æ¯æ ä¸çãé¿éãè
¾è®¯ çä¸åæ¯æS3åè®®çåå®¶ | 䏿¯æ | |
| | | | çä¿¡ | éç¨ sms4j çä¿¡èåå
æ¯ææ°åç§çä¿¡åå®¶ åªéå¨ymlé
置好åå®¶å¯é¥å³å¯ä½¿ç¨ å¯å¤åå®¶å
±ç¨ | 䏿¯æ | |
| | |
| | | <lock4j.version>2.2.4</lock4j.version> |
| | | <dynamic-ds.version>3.6.1</dynamic-ds.version> |
| | | <alibaba-ttl.version>2.14.2</alibaba-ttl.version> |
| | | <xxl-job.version>2.4.0</xxl-job.version> |
| | | <powerjob.version>4.3.3</powerjob.version> |
| | | <mapstruct-plus.version>1.2.3</mapstruct-plus.version> |
| | | <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version> |
| | | <lombok.version>1.18.26</lombok.version> |
| | |
| | | <version>${lock4j.version}</version> |
| | | </dependency> |
| | | |
| | | <!-- xxl-job-core --> |
| | | <dependency> |
| | | <groupId>com.xuxueli</groupId> |
| | | <artifactId>xxl-job-core</artifactId> |
| | | <version>${xxl-job.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | |
| | | <version>${revision}</version> |
| | | </dependency> |
| | | |
| | | <!-- PowerJob --> |
| | | <dependency> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-worker-spring-boot-starter</artifactId> |
| | | <version>${powerjob.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-official-processors</artifactId> |
| | | <version>${powerjob.version}</version> |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | </dependencyManagement> |
| | | |
| | |
| | | username: ruoyi |
| | | password: 123456 |
| | | |
| | | --- # xxl-job é
ç½® |
| | | xxl.job: |
| | | # æ§è¡å¨å¼å
³ |
| | | enabled: true |
| | | # è°åº¦ä¸å¿å°åï¼å¦è°åº¦ä¸å¿é群é¨ç½²åå¨å¤ä¸ªå°ååç¨éå·åéã |
| | | admin-addresses: http://localhost:9100/xxl-job-admin |
| | | # æ§è¡å¨é讯TOKENï¼é空æ¶å¯ç¨ |
| | | access-token: xxl-job |
| | | executor: |
| | | # æ§è¡å¨AppNameï¼æ§è¡å¨å¿è·³æ³¨ååç»ä¾æ®ï¼ä¸ºç©ºåå
³éèªå¨æ³¨å |
| | | appname: xxl-job-executor |
| | | # æ§è¡å¨ç«¯å£å· æ§è¡å¨ä»9101å¼å§å¾åå |
| | | port: 9101 |
| | | # æ§è¡å¨æ³¨åï¼é»è®¤IP:PORT |
| | | address: |
| | | # æ§è¡å¨IPï¼é»è®¤èªå¨è·åIP |
| | | ip: |
| | | # æ§è¡å¨è¿è¡æ¥å¿æä»¶åå¨ç£çè·¯å¾ |
| | | logpath: ./logs/xxl-job |
| | | # æ§è¡å¨æ¥å¿æä»¶ä¿å天æ°ï¼å¤§äº3çæ |
| | | logretentiondays: 30 |
| | | --- # powerjob é
ç½® |
| | | powerjob: |
| | | worker: |
| | | enabled: true |
| | | # éè¦ç°å¨powerjobç»å½é¡µæ§è¡åºç¨æ³¨ååæè½ä½¿ç¨ |
| | | app-name: ruoyi-worker |
| | | enable-test-mode: false |
| | | max-appended-wf-context-length: 4096 |
| | | max-result-length: 4096 |
| | | port: 27777 |
| | | protocol: http |
| | | server-address: 127.0.0.1:7700,127.0.0.1:7701 |
| | | store-strategy: disk |
| | | |
| | | --- # æ°æ®æºé
ç½® |
| | | spring: |
| | |
| | | username: ruoyi |
| | | password: 123456 |
| | | |
| | | --- # xxl-job é
ç½® |
| | | xxl.job: |
| | | # æ§è¡å¨å¼å
³ |
| | | enabled: true |
| | | # è°åº¦ä¸å¿å°åï¼å¦è°åº¦ä¸å¿é群é¨ç½²åå¨å¤ä¸ªå°ååç¨éå·åéã |
| | | admin-addresses: http://localhost:9100/xxl-job-admin |
| | | # æ§è¡å¨é讯TOKENï¼é空æ¶å¯ç¨ |
| | | access-token: xxl-job |
| | | executor: |
| | | # æ§è¡å¨AppNameï¼æ§è¡å¨å¿è·³æ³¨ååç»ä¾æ®ï¼ä¸ºç©ºåå
³éèªå¨æ³¨å |
| | | appname: xxl-job-executor |
| | | # æ§è¡å¨ç«¯å£å· æ§è¡å¨ä»9101å¼å§å¾åå |
| | | port: 9101 |
| | | # æ§è¡å¨æ³¨åï¼é»è®¤IP:PORT |
| | | address: |
| | | # æ§è¡å¨IPï¼é»è®¤èªå¨è·åIP |
| | | ip: |
| | | # æ§è¡å¨è¿è¡æ¥å¿æä»¶åå¨ç£çè·¯å¾ |
| | | logpath: ./logs/xxl-job |
| | | # æ§è¡å¨æ¥å¿æä»¶ä¿å天æ°ï¼å¤§äº3çæ |
| | | logretentiondays: 30 |
| | | --- # powerjob é
ç½® |
| | | powerjob: |
| | | worker: |
| | | enabled: true |
| | | # éè¦ç°å¨powerjobç»å½é¡µæ§è¡åºç¨æ³¨ååæè½ä½¿ç¨ |
| | | app-name: ruoyi-worker |
| | | enable-test-mode: false |
| | | max-appended-wf-context-length: 4096 |
| | | max-result-length: 4096 |
| | | port: 27777 |
| | | protocol: http |
| | | server-address: 127.0.0.1:7700,127.0.0.1:7701 |
| | | store-strategy: disk |
| | | |
| | | --- # æ°æ®æºé
ç½® |
| | | spring: |
| | |
| | | ruoyi-common-job 宿¶ä»»å¡ |
| | | </description> |
| | | |
| | | <dependencies> |
| | | <dependencies> |
| | | |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-autoconfigure</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- xxl-job-core --> |
| | | <!--PowerJob--> |
| | | <dependency> |
| | | <groupId>com.xuxueli</groupId> |
| | | <artifactId>xxl-job-core</artifactId> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-worker-spring-boot-starter</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-official-processors</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.job.config; |
| | | |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import tech.powerjob.worker.PowerJobWorker; |
| | | |
| | | /** |
| | | * å¯å¨å®æ¶ä»»å¡ |
| | | * @author yhan219 |
| | | * @since 2023/6/2 |
| | | */ |
| | | @Configuration |
| | | @ConditionalOnBean(PowerJobWorker.class) |
| | | @ConditionalOnProperty(prefix = "powerjob.worker", name = "enabled", havingValue = "true") |
| | | @EnableScheduling |
| | | public class PowerJobConfig { |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | <modules> |
| | | <module>ruoyi-monitor-admin</module> |
| | | <module>ruoyi-xxl-job-admin</module> |
| | | <module>ruoyi-powerjob-server</module> |
| | | </modules> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-extend</artifactId> |
| | | <version>${revision}</version> |
| | | </parent> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-powerjob-server</artifactId> |
| | | <version>${revision}</version> |
| | | <packaging>jar</packaging> |
| | | |
| | | <properties> |
| | | <spring-boot.version>2.7.4</spring-boot.version> |
| | | </properties> |
| | | <dependencyManagement> |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-parent</artifactId> |
| | | <version>${spring-boot.version}</version> |
| | | <type>pom</type> |
| | | <scope>import</scope> |
| | | </dependency> |
| | | </dependencies> |
| | | </dependencyManagement> |
| | | |
| | | <dependencies> |
| | | |
| | | <!-- PowerJob server--> |
| | | <dependency> |
| | | <groupId>tech.powerjob</groupId> |
| | | <artifactId>powerjob-server-starter</artifactId> |
| | | <version>${powerjob.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <finalName>${project.artifactId}</finalName> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | <version>${spring-boot.version}</version> |
| | | <executions> |
| | | <execution> |
| | | <goals> |
| | | <goal>repackage</goal> |
| | | </goals> |
| | | </execution> |
| | | </executions> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.powerjob.server; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import tech.powerjob.server.PowerJobServerApplication; |
| | | import tech.powerjob.server.common.utils.PropertyUtils; |
| | | |
| | | /** |
| | | * Admin çæ§å¯å¨ç¨åº |
| | | * |
| | | * @author yhan219 |
| | | */ |
| | | @Slf4j |
| | | @EnableScheduling |
| | | @SpringBootApplication(scanBasePackages = "tech.powerjob.server") |
| | | public class RuoyiPowerJobServerApplication { |
| | | |
| | | private static final String TIPS = "\n\n" + |
| | | "******************* PowerJob Tips *******************\n" + |
| | | "妿åºç¨æ æ³å¯å¨ï¼æä»¬å»ºè®®æ¨ä»ç»é
è¯»ä»¥ä¸ææ¡£æ¥è§£å³:\n" + |
| | | "if server can't startup, we recommend that you read the documentation to find a solution:\n" + |
| | | "https://www.yuque.com/powerjob/guidence/problem\n" + |
| | | "******************* PowerJob Tips *******************\n\n"; |
| | | |
| | | public static void main(String[] args) { |
| | | |
| | | pre(); |
| | | |
| | | // Start SpringBoot application. |
| | | try { |
| | | SpringApplication.run(PowerJobServerApplication.class, args); |
| | | } catch (Throwable t) { |
| | | log.error(TIPS); |
| | | throw t; |
| | | } |
| | | } |
| | | |
| | | private static void pre() { |
| | | log.info(TIPS); |
| | | PropertyUtils.init(); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | oms.env=DAILY |
| | | logging.config=classpath:logback-dev.xml |
| | | |
| | | ####### Database properties(Configure according to the the environment) ####### |
| | | spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver |
| | | spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai |
| | | spring.datasource.core.username=root |
| | | spring.datasource.core.password=root |
| | | spring.datasource.core.maximum-pool-size=20 |
| | | spring.datasource.core.minimum-idle=5 |
| | | |
| | | ####### MongoDB properties(Non-core configuration properties) ####### |
| | | ####### delete mongodb config to disable mongodb ####### |
| | | #oms.mongodb.enable=true |
| | | #spring.data.mongodb.uri=mongodb+srv://zqq:No1Bug2Please3!@cluster0.wie54.gcp.mongodb.net/powerjob_daily?retryWrites=true&w=majority |
| | | |
| | | ####### Email properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the mail ####### |
| | | #spring.mail.host=smtp.163.com |
| | | #spring.mail.username=zqq@163.com |
| | | #spring.mail.password=GOFZPNARMVKCGONV |
| | | #spring.mail.properties.mail.smtp.auth=true |
| | | #spring.mail.properties.mail.smtp.starttls.enable=true |
| | | #spring.mail.properties.mail.smtp.starttls.required=true |
| | | |
| | | ####### DingTalk properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the DingTalk ####### |
| | | #oms.alarm.ding.app-key=dingauqwkvxxnqskknfv |
| | | #oms.alarm.ding.app-secret=XWrEPdAZMPgJeFtHuL0LH73LRj-74umF2_0BFcoXMfvnX0pCQvt0rpb1JOJU_HLl |
| | | #oms.alarm.ding.agent-id=847044348 |
| | | |
| | | ####### Resource cleaning properties ####### |
| | | oms.instanceinfo.retention=1 |
| | | oms.container.retention.local=1 |
| | | oms.container.retention.remote=-1 |
| | | |
| | | ####### Cache properties ####### |
| | | oms.instance.metadata.cache.size=1024 |
| | | |
| | | ####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which ####### |
| | | ####### split-brain could be avoided while performance overhead would increase. ####### |
| | | oms.accurate.select.server.percentage = 50 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | oms.env=PRE |
| | | logging.config=classpath:logback-product.xml |
| | | |
| | | ####### Database properties(Configure according to the the environment) ####### |
| | | spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver |
| | | spring.datasource.core.jdbc-url=jdbc:mysql://remotehost:3306/powerjob-pre?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai |
| | | spring.datasource.core.username=root |
| | | spring.datasource.core.password=No1Bug2Please3! |
| | | spring.datasource.core.maximum-pool-size=20 |
| | | spring.datasource.core.minimum-idle=5 |
| | | |
| | | ####### MongoDB properties(Non-core configuration properties) ####### |
| | | ####### delete mongodb config to disable mongodb ####### |
| | | oms.mongodb.enable=true |
| | | spring.data.mongodb.uri=mongodb://remotehost:27017/powerjob-pre |
| | | |
| | | ####### Email properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the mail ####### |
| | | spring.mail.host=smtp.qq.com |
| | | spring.mail.username=zqq |
| | | spring.mail.password=qqz |
| | | spring.mail.properties.mail.smtp.auth=true |
| | | spring.mail.properties.mail.smtp.starttls.enable=true |
| | | spring.mail.properties.mail.smtp.starttls.required=true |
| | | |
| | | ####### DingTalk properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the DingTalk ####### |
| | | oms.alarm.ding.app-key=dingauqwkvxxnqskknfv |
| | | oms.alarm.ding.app-secret=XWrEPdAZMPgJeFtHuL0LH73LRj-74umF2_0BFcoXMfvnX0pCQvt0rpb1JOJU_HLl |
| | | oms.alarm.ding.agent-id=847044348 |
| | | |
| | | ####### Resource cleaning properties ####### |
| | | oms.instanceinfo.retention=3 |
| | | oms.container.retention.local=3 |
| | | oms.container.retention.remote=-1 |
| | | |
| | | ####### Cache properties ####### |
| | | oms.instance.metadata.cache.size=1024 |
| | | |
| | | ####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which ####### |
| | | ####### split-brain could be avoided while performance overhead would increase. ####### |
| | | oms.accurate.select.server.percentage = 50 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | oms.env=PRODUCT |
| | | logging.config=classpath:logback-product.xml |
| | | |
| | | ####### Database properties(Configure according to the the environment) ####### |
| | | spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver |
| | | spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/powerjob-product?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai |
| | | spring.datasource.core.username=root |
| | | spring.datasource.core.password=No1Bug2Please3! |
| | | spring.datasource.core.maximum-pool-size=20 |
| | | spring.datasource.core.minimum-idle=5 |
| | | |
| | | ####### MongoDB properties(Non-core configuration properties) ####### |
| | | ####### delete mongodb config to disable mongodb ####### |
| | | oms.mongodb.enable=true |
| | | spring.data.mongodb.uri=mongodb://localhost:27017/powerjob-product |
| | | |
| | | ####### Email properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the mail ####### |
| | | spring.mail.host=smtp.qq.com |
| | | spring.mail.username=zqq |
| | | spring.mail.password=qqz |
| | | spring.mail.properties.mail.smtp.auth=true |
| | | spring.mail.properties.mail.smtp.starttls.enable=true |
| | | spring.mail.properties.mail.smtp.starttls.required=true |
| | | |
| | | ####### DingTalk properties(Non-core configuration properties) ####### |
| | | ####### Delete the following code to disable the DingTalk ####### |
| | | oms.alarm.ding.app-key= |
| | | oms.alarm.ding.app-secret= |
| | | oms.alarm.ding.agent-id= |
| | | |
| | | ####### Resource cleaning properties ####### |
| | | oms.instanceinfo.retention=7 |
| | | oms.container.retention.local=7 |
| | | oms.container.retention.remote=-1 |
| | | |
| | | ####### Cache properties ####### |
| | | oms.instance.metadata.cache.size=2048 |
| | | |
| | | ####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which ####### |
| | | ####### split-brain could be avoided while performance overhead would increase. ####### |
| | | oms.accurate.select.server.percentage = 50 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | # Http server port |
| | | server.port=7700 |
| | | |
| | | spring.profiles.active=daily |
| | | spring.main.banner-mode=log |
| | | spring.jpa.open-in-view=false |
| | | spring.data.mongodb.repositories.type=none |
| | | logging.level.org.mongodb=warn |
| | | |
| | | # Configuration for uploading files. |
| | | spring.servlet.multipart.enabled=true |
| | | spring.servlet.multipart.file-size-threshold=0 |
| | | spring.servlet.multipart.max-file-size=209715200 |
| | | spring.servlet.multipart.max-request-size=209715200 |
| | | |
| | | ###### PowerJob transporter configuration ###### |
| | | oms.transporter.active.protocols=AKKA,HTTP |
| | | oms.transporter.main.protocol=HTTP |
| | | oms.akka.port=10086 |
| | | oms.http.port=10010 |
| | | # Prefix for all tables. Default empty string. Config if you have needs, i.e. pj_ |
| | | oms.table-prefix=pj_ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ${AnsiColor.GREEN} |
| | | âââââââ ââ ââ |
| | | âââââââââ âââ âââ |
| | | âââ âââ ââââââ âââ ââ âââââ ââââââ âââ ââââââ âââ |
| | | ââââââââ ââââââââââââ â âââ ââââââââââââââ âââ âââââââââââââââ |
| | | âââââââ âââ âââ âââ ââââââââââââââ âââ â ââââââ âââââââââââ |
| | | âââ âââ âââ âââââââââââââââââ âââ ââ ââââââ ââââââ âââ |
| | | âââ ââââââââ ââââ âââââââââââââââââ âââââââ ââââââââ âââââââ |
| | | ââ ââââââ âââ âââ ââââââ âââ âââââ ââââââ âââââ |
| | | ${AnsiColor.BRIGHT_RED} |
| | | * Maintainer: tengjiqi@gmail.com & Team PowerJob |
| | | * OfficialWebsite: http://www.powerjob.tech/ |
| | | * SourceCode: https://github.com/PowerJob/PowerJob |
| | | * PoweredBy: SpringBoot${spring-boot.formatted-version} |
| | | ${AnsiColor.DEFAULT} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <included> |
| | | |
| | | <property name="MONITOR_LOG_PATH" value="${LOG_PATH}/monitors"/> |
| | | <property name="ROTATE_PATTERN" value="%d{yyyy-MM-dd}.%i"/> |
| | | |
| | | <property name="MONITOR_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS}|%thread|%X{serverId}|%msg%n"/> |
| | | |
| | | <!-- database --> |
| | | <appender name="MONITOR_LOGGER_DB_OPERATION_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <file>${MONITOR_LOG_PATH}/database.log</file> |
| | | <encoder> |
| | | <pattern>${MONITOR_LOG_PATTERN}</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
| | | <fileNamePattern>${MONITOR_LOG_PATH}/database.log.${ROTATE_PATTERN}</fileNamePattern> |
| | | <maxHistory>3</maxHistory> |
| | | <maxFileSize>200MB</maxFileSize> |
| | | <totalSizeCap>1000MB</totalSizeCap> |
| | | </rollingPolicy> |
| | | </appender> |
| | | <appender name="ASYNC_MONITOR_LOGGER_DB_OPERATION_APPENDER" class="ch.qos.logback.classic.AsyncAppender"> |
| | | <queueSize>512</queueSize> |
| | | <discardingThreshold>0</discardingThreshold> |
| | | <neverBlock>true</neverBlock> |
| | | <appender-ref ref="MONITOR_LOGGER_DB_OPERATION_APPENDER"/> |
| | | </appender> |
| | | <logger name="MONITOR_LOGGER_DB_OPERATION" level="INFO" additivity="false"> |
| | | <appender-ref ref="ASYNC_MONITOR_LOGGER_DB_OPERATION_APPENDER"/> |
| | | </logger> |
| | | |
| | | |
| | | <!-- TtReportInstanceStatusEvent --> |
| | | <appender name="MONITOR_LOGGER_TT_REPORT_STATUS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <file>${MONITOR_LOG_PATH}/tt_status_report.log</file> |
| | | <encoder> |
| | | <pattern>${MONITOR_LOG_PATTERN}</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
| | | <fileNamePattern>${MONITOR_LOG_PATH}/tt_status_report.log.${ROTATE_PATTERN}</fileNamePattern> |
| | | <maxHistory>3</maxHistory> |
| | | <maxFileSize>200MB</maxFileSize> |
| | | <totalSizeCap>1000MB</totalSizeCap> |
| | | </rollingPolicy> |
| | | </appender> |
| | | <appender name="ASYNC_MONITOR_LOGGER_TT_REPORT_STATUS_APPENDER" class="ch.qos.logback.classic.AsyncAppender"> |
| | | <queueSize>512</queueSize> |
| | | <discardingThreshold>0</discardingThreshold> |
| | | <neverBlock>true</neverBlock> |
| | | <appender-ref ref="MONITOR_LOGGER_TT_REPORT_STATUS_APPENDER"/> |
| | | </appender> |
| | | <logger name="MONITOR_LOGGER_TT_REPORT_STATUS" level="INFO" additivity="false"> |
| | | <appender-ref ref="ASYNC_MONITOR_LOGGER_TT_REPORT_STATUS_APPENDER"/> |
| | | </logger> |
| | | |
| | | <!-- WorkerHeartbeatEvent --> |
| | | <appender name="MONITOR_LOGGER_WORKER_HEART_BEAT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <file>${MONITOR_LOG_PATH}/worker_heartbeat.log</file> |
| | | <encoder> |
| | | <pattern>${MONITOR_LOG_PATTERN}</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
| | | <fileNamePattern>${MONITOR_LOG_PATH}/worker_heartbeat.log.${ROTATE_PATTERN}</fileNamePattern> |
| | | <maxHistory>3</maxHistory> |
| | | <maxFileSize>200MB</maxFileSize> |
| | | <totalSizeCap>1000MB</totalSizeCap> |
| | | </rollingPolicy> |
| | | </appender> |
| | | <appender name="ASYNC_MONITOR_LOGGER_WORKER_HEART_BEAT_APPENDER" class="ch.qos.logback.classic.AsyncAppender"> |
| | | <queueSize>512</queueSize> |
| | | <discardingThreshold>0</discardingThreshold> |
| | | <neverBlock>true</neverBlock> |
| | | <appender-ref ref="MONITOR_LOGGER_WORKER_HEART_BEAT_APPENDER"/> |
| | | </appender> |
| | | <logger name="MONITOR_LOGGER_WORKER_HEART_BEAT" level="INFO" additivity="false"> |
| | | <appender-ref ref="ASYNC_MONITOR_LOGGER_WORKER_HEART_BEAT_APPENDER"/> |
| | | </logger> |
| | | |
| | | |
| | | <!-- WorkerLogReportEvent --> |
| | | <appender name="MONITOR_LOGGER_WORKER_LOG_REPORT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <file>${MONITOR_LOG_PATH}/worker_log_report.log</file> |
| | | <encoder> |
| | | <pattern>${MONITOR_LOG_PATTERN}</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
| | | <fileNamePattern>${MONITOR_LOG_PATH}/worker_log_report.log.${ROTATE_PATTERN}</fileNamePattern> |
| | | <maxHistory>3</maxHistory> |
| | | <maxFileSize>200MB</maxFileSize> |
| | | <totalSizeCap>1000MB</totalSizeCap> |
| | | </rollingPolicy> |
| | | </appender> |
| | | <appender name="ASYNC_MONITOR_LOGGER_WORKER_LOG_REPORT_APPENDER" class="ch.qos.logback.classic.AsyncAppender"> |
| | | <queueSize>512</queueSize> |
| | | <discardingThreshold>0</discardingThreshold> |
| | | <neverBlock>true</neverBlock> |
| | | <appender-ref ref="MONITOR_LOGGER_WORKER_LOG_REPORT_APPENDER"/> |
| | | </appender> |
| | | <logger name="MONITOR_LOGGER_WORKER_LOG_REPORT" level="INFO" additivity="false"> |
| | | <appender-ref ref="ASYNC_MONITOR_LOGGER_WORKER_LOG_REPORT_APPENDER"/> |
| | | </logger> |
| | | |
| | | |
| | | <!-- SlowLockEvent --> |
| | | <appender name="MONITOR_LOGGER_SLOW_LOCK_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <file>${MONITOR_LOG_PATH}/lock.log</file> |
| | | <encoder> |
| | | <pattern>${MONITOR_LOG_PATTERN}</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
| | | <fileNamePattern>${MONITOR_LOG_PATH}/lock.log.${ROTATE_PATTERN}</fileNamePattern> |
| | | <maxHistory>3</maxHistory> |
| | | <maxFileSize>200MB</maxFileSize> |
| | | <totalSizeCap>1000MB</totalSizeCap> |
| | | </rollingPolicy> |
| | | </appender> |
| | | <appender name="ASYNC_MONITOR_LOGGER_SLOW_LOCK_APPENDER" class="ch.qos.logback.classic.AsyncAppender"> |
| | | <queueSize>512</queueSize> |
| | | <discardingThreshold>0</discardingThreshold> |
| | | <neverBlock>true</neverBlock> |
| | | <appender-ref ref="MONITOR_LOGGER_SLOW_LOCK_APPENDER"/> |
| | | </appender> |
| | | <logger name="MONITOR_LOGGER_SLOW_LOCK" level="INFO" additivity="false"> |
| | | <appender-ref ref="ASYNC_MONITOR_LOGGER_SLOW_LOCK_APPENDER"/> |
| | | </logger> |
| | | |
| | | </included> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <!-- Configuration for local environment, all logs would print in console. --> |
| | | <configuration> |
| | | <!-- Configure color for logs. --> |
| | | <!-- Classes for rendering color. --> |
| | | <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> |
| | | <conversionRule conversionWord="wex" |
| | | converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> |
| | | <conversionRule conversionWord="wEx" |
| | | converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/> |
| | | <!-- Color log pattern. --> |
| | | <property name="CONSOLE_LOG_PATTERN" |
| | | value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{20}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> |
| | | |
| | | <logger name="MONITOR_LOGGER_DB_OPERATION" level="OFF"/> |
| | | |
| | | <!-- Configuration for console output. --> |
| | | <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> |
| | | <encoder> |
| | | <pattern>${CONSOLE_LOG_PATTERN}</pattern> |
| | | <charset>utf8</charset> |
| | | </encoder> |
| | | </appender> |
| | | |
| | | <!-- Quit timing logs, which seems disordered. --> |
| | | <logger name="tech.powerjob.server.service.timing" level="WARN" additivity="false"> |
| | | <appender-ref ref="CONSOLE"/> |
| | | </logger> |
| | | |
| | | <logger name="tech.powerjob" level="DEBUG" additivity="false"> |
| | | <appender-ref ref="CONSOLE"/> |
| | | </logger> |
| | | |
| | | <root level="INFO"> |
| | | <appender-ref ref="CONSOLE"/> |
| | | </root> |
| | | |
| | | </configuration> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <!-- Configuration for production environment. --> |
| | | <configuration> |
| | | |
| | | <!-- Default configuration. --> |
| | | <include resource="org/springframework/boot/logging/logback/defaults.xml"/> |
| | | <!-- Configuration for console. --> |
| | | <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> |
| | | |
| | | <!-- |
| | | Log path, pay attention to permission, logs may be unable to generate. |
| | | Bug recording: Setting `~/logs`, is unable to create folder in user home directory, |
| | | a folder with the name ~ is created in project folder. |
| | | --> |
| | | <property name="LOG_PATH" value="${user.home}/powerjob/server/logs"/> |
| | | |
| | | <!-- include other logback configs --> |
| | | <include resource="logback-config/powerjob_monitor.xml"/> |
| | | |
| | | <!-- Configuration for ERROR logs. All error logs will write twice. --> |
| | | <appender name="ERROR_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <file>${LOG_PATH}/powerjob-server-error.log</file> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <FileNamePattern>${LOG_PATH}/powerjob-server-error.%d{yyyy-MM-dd}.log</FileNamePattern> |
| | | <MaxHistory>7</MaxHistory> |
| | | </rollingPolicy> |
| | | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>ERROR</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | <!-- End of configuration for ERROR logs. --> |
| | | |
| | | <!-- Configuration for Web services. --> |
| | | <appender name="WEB_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <file>${LOG_PATH}/powerjob-server-web.log</file> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <FileNamePattern>${LOG_PATH}/powerjob-server-web.%d{yyyy-MM-dd}.log</FileNamePattern> |
| | | <MaxHistory>7</MaxHistory> |
| | | </rollingPolicy> |
| | | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <append>true</append> |
| | | </appender> |
| | | <logger name="WEB_LOG" level="INFO" additivity="false"> |
| | | <appender-ref ref="WEB_LOG_APPENDER"/> |
| | | </logger> |
| | | <!-- End of configuration for Web services. --> |
| | | |
| | | <!-- Configuration for system logs. --> |
| | | <appender name="DEFAULT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <file>${LOG_PATH}/powerjob-server-application.log</file> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <FileNamePattern>${LOG_PATH}/powerjob-server-application.%d{yyyy-MM-dd}.log</FileNamePattern> |
| | | <MaxHistory>7</MaxHistory> |
| | | </rollingPolicy> |
| | | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <append>true</append> |
| | | </appender> |
| | | <!-- End of configuration for system logs. --> |
| | | |
| | | <root level="INFO"> |
| | | <appender-ref ref="CONSOLE"/> |
| | | <appender-ref ref="DEFAULT_APPENDER"/> |
| | | <appender-ref ref="ERROR_APPENDER"/> |
| | | </root> |
| | | |
| | | </configuration> |
| | |
| | | select table_name, table_comment, create_time, update_time |
| | | from information_schema.tables |
| | | where table_schema = (select database()) |
| | | AND table_name NOT LIKE 'xxl_job_%' AND table_name NOT LIKE 'gen_%' |
| | | AND table_name NOT LIKE 'pj_%' AND table_name NOT LIKE 'gen_%' |
| | | <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0"> |
| | | AND table_name NOT IN |
| | | <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item"> |
| | |
| | | where dt.table_name = dtc.table_name |
| | | and dt.table_name = uo.object_name |
| | | and uo.object_type = 'TABLE' |
| | | AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0"> |
| | | AND lower(dt.table_name) NOT IN |
| | | <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item"> |
| | |
| | | AND n.nspname = 'public'::name |
| | | AND n.nspname <![CDATA[ <> ]]> ''::name |
| | | ) list_table |
| | | where table_name NOT LIKE 'xxl_job_%' AND table_name NOT LIKE 'gen_%' |
| | | where table_name NOT LIKE 'pj_%' AND table_name NOT LIKE 'gen_%' |
| | | <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0"> |
| | | AND table_name NOT IN |
| | | <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item"> |
| | |
| | | FROM SYSOBJECTS D |
| | | INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID |
| | | AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES' |
| | | AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%' |
| | | <if test="genTable.params.genTableNames != null and genTable.params.genTableNames.size > 0"> |
| | | AND D.NAME NOT IN |
| | | <foreach collection="genTable.params.genTableNames" open="(" close=")" separator="," item="item"> |
| | |
| | | <select id="selectDbTableListByNames" resultMap="GenTableResult"> |
| | | <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isMySql()"> |
| | | select table_name, table_comment, create_time, update_time from information_schema.tables |
| | | where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) |
| | | where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) |
| | | and table_name in |
| | | <foreach collection="array" item="name" open="(" separator="," close=")"> |
| | | #{name} |
| | |
| | | where dt.table_name = dtc.table_name |
| | | and dt.table_name = uo.object_name |
| | | and uo.object_type = 'TABLE' |
| | | AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | and lower(dt.table_name) in |
| | | <foreach collection="array" item="name" open="(" separator="," close=")"> |
| | | #{name} |
| | |
| | | AND n.nspname = 'public'::name |
| | | AND n.nspname <![CDATA[ <> ]]> ''::name |
| | | ) list_table |
| | | where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' |
| | | where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' |
| | | and table_name in |
| | | <foreach collection="array" item="name" open="(" separator="," close=")"> |
| | | #{name} |
| | |
| | | FROM SYSOBJECTS D |
| | | INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID |
| | | AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES' |
| | | AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME in |
| | | <foreach collection="array" item="name" open="(" separator="," close=")"> |
| | | #{name} |
| | |
| | | <select id="selectTableByName" parameterType="String" resultMap="GenTableResult"> |
| | | <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isMySql()"> |
| | | select table_name, table_comment, create_time, update_time from information_schema.tables |
| | | where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) |
| | | where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) |
| | | and table_name = #{tableName} |
| | | </if> |
| | | <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isOracle()"> |
| | |
| | | where dt.table_name = dtc.table_name |
| | | and dt.table_name = uo.object_name |
| | | and uo.object_type = 'TABLE' |
| | | AND dt.table_name NOT LIKE 'XXL_JOB_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | AND dt.table_name NOT LIKE 'pj_%' AND dt.table_name NOT LIKE 'GEN_%' |
| | | AND dt.table_name NOT IN (select table_name from gen_table) |
| | | and lower(dt.table_name) = #{tableName} |
| | | </if> |
| | |
| | | AND n.nspname = 'public'::name |
| | | AND n.nspname <![CDATA[ <> ]]> ''::name |
| | | ) list_table |
| | | where table_name NOT LIKE 'xxl_job_%' and table_name NOT LIKE 'gen_%' |
| | | where table_name NOT LIKE 'pj_%' and table_name NOT LIKE 'gen_%' |
| | | and table_name = #{tableName} |
| | | </if> |
| | | <if test="@org.dromara.common.mybatis.helper.DataBaseHelper@isSqlServer()"> |
| | |
| | | FROM SYSOBJECTS D |
| | | INNER JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID |
| | | AND F.MINOR_ID = 0 AND D.XTYPE = 'U' AND D.NAME != 'DTPROPERTIES' |
| | | AND D.NAME NOT LIKE 'xxl_job_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME NOT LIKE 'pj_%' AND D.NAME NOT LIKE 'gen_%' |
| | | AND D.NAME = #{tableName} |
| | | </if> |
| | | </select> |
| | |
| | | <artifactId>ruoyi-common-core</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- è°åº¦æ¨¡å --> |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-job</artifactId> |
| | | </dependency> |
| | | |
| | | |
| | | </dependencies> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * æ¼ç¤ºç¨ä¾ |
| | | * copy from https://github.com/PowerJob/PowerJob/tree/master/powerjob-worker-samples/src/main/java/tech/powerjob/samples |
| | | */ |
| | | |
| | | package org.dromara.job; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.common.utils.NetUtils; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.TaskResult; |
| | | import tech.powerjob.worker.core.processor.sdk.BroadcastProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 广æå¤çå¨ ç¤ºä¾ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/17 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class BroadcastProcessorDemo implements BroadcastProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult preProcess(TaskContext context) { |
| | | System.out.println("===== BroadcastProcessorDemo#preProcess ======"); |
| | | context.getOmsLogger().info("BroadcastProcessorDemo#preProcess, current host: {}", NetUtils.getLocalHost()); |
| | | if ("rootFailed".equals(context.getJobParams())) { |
| | | return new ProcessResult(false, "console need failed"); |
| | | } else { |
| | | return new ProcessResult(true); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext taskContext) throws Exception { |
| | | OmsLogger logger = taskContext.getOmsLogger(); |
| | | System.out.println("===== BroadcastProcessorDemo#process ======"); |
| | | logger.info("BroadcastProcessorDemo#process, current host: {}", NetUtils.getLocalHost()); |
| | | long sleepTime = 1000; |
| | | try { |
| | | sleepTime = Long.parseLong(taskContext.getJobParams()); |
| | | } catch (Exception e) { |
| | | logger.warn("[BroadcastProcessor] parse sleep time failed!", e); |
| | | } |
| | | Thread.sleep(Math.max(sleepTime, 1000)); |
| | | return new ProcessResult(true); |
| | | } |
| | | |
| | | @Override |
| | | public ProcessResult postProcess(TaskContext context, List<TaskResult> taskResults) { |
| | | System.out.println("===== BroadcastProcessorDemo#postProcess ======"); |
| | | context.getOmsLogger().info("BroadcastProcessorDemo#postProcess, current host: {}, taskResult: {}", NetUtils.getLocalHost(), taskResults); |
| | | return new ProcessResult(true, "success"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.official.processors.util.CommonUtils; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.Date; |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | | * LogTestProcessor |
| | | * |
| | | * @author tjq |
| | | * @since 2022/9/18 |
| | | */ |
| | | @Component |
| | | public class LogTestProcessor implements BasicProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | |
| | | final OmsLogger omsLogger = context.getOmsLogger(); |
| | | final String parseParams = CommonUtils.parseParams(context); |
| | | final JSONObject config = Optional.ofNullable(JSONObject.parseObject(parseParams)).orElse(new JSONObject()); |
| | | |
| | | final long loopTimes = Optional.ofNullable(config.getLong("loopTimes")).orElse(1000L); |
| | | |
| | | for (int i = 0; i < loopTimes; i++) { |
| | | omsLogger.debug("[DEBUG] one DEBUG log in {}", new Date()); |
| | | omsLogger.info("[INFO] one INFO log in {}", new Date()); |
| | | omsLogger.warn("[WARN] one WARN log in {}", new Date()); |
| | | omsLogger.error("[ERROR] one ERROR log in {}", new Date()); |
| | | } |
| | | |
| | | return new ProcessResult(true); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import com.google.common.collect.Lists; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | import lombok.NoArgsConstructor; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.common.serialize.JsonUtils; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.MapProcessor; |
| | | |
| | | import java.util.List; |
| | | import java.util.concurrent.ThreadLocalRandom; |
| | | |
| | | /** |
| | | * Mapå¤çå¨ ç¤ºä¾ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/18 |
| | | */ |
| | | @Component |
| | | public class MapProcessorDemo implements MapProcessor { |
| | | |
| | | |
| | | /** |
| | | * æ¯ä¸æ¹åéä»»å¡å¤§å° |
| | | */ |
| | | private static final int BATCH_SIZE = 100; |
| | | /** |
| | | * åéçæ¹æ¬¡ |
| | | */ |
| | | private static final int BATCH_NUM = 5; |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | |
| | | log.info("============== MapProcessorDemo#process =============="); |
| | | log.info("isRootTask:{}", isRootTask()); |
| | | log.info("taskContext:{}", JsonUtils.toJSONString(context)); |
| | | |
| | | if (isRootTask()) { |
| | | log.info("==== MAP ===="); |
| | | List<SubTask> subTasks = Lists.newLinkedList(); |
| | | for (int j = 0; j < BATCH_NUM; j++) { |
| | | SubTask subTask = new SubTask(); |
| | | subTask.siteId = j; |
| | | subTask.itemIds = Lists.newLinkedList(); |
| | | subTasks.add(subTask); |
| | | for (int i = 0; i < BATCH_SIZE; i++) { |
| | | subTask.itemIds.add(i + j * 100); |
| | | } |
| | | } |
| | | map(subTasks, "MAP_TEST_TASK"); |
| | | return new ProcessResult(true, "map successfully"); |
| | | } else { |
| | | |
| | | log.info("==== PROCESS ===="); |
| | | SubTask subTask = (SubTask) context.getSubTask(); |
| | | for (Integer itemId : subTask.getItemIds()) { |
| | | if (Thread.interrupted()) { |
| | | // ä»»å¡è¢«ä¸æ |
| | | log.info("job has been stop! so stop to process subTask: {} => {}", subTask.getSiteId(), itemId); |
| | | break; |
| | | } |
| | | log.info("processing subTask: {} => {}", subTask.getSiteId(), itemId); |
| | | int max = Integer.MAX_VALUE >> 7; |
| | | for (int i = 0; ; i++) { |
| | | // 模æèæ¶æä½ |
| | | if (i > max) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | // æµè¯å¨ Map ä»»å¡ä¸è¿½å ä¸ä¸æ |
| | | context.getWorkflowContext().appendData2WfContext("Yasuo", "A sword's poor company for a long road."); |
| | | boolean b = ThreadLocalRandom.current().nextBoolean(); |
| | | if (context.getCurrentRetryTimes() >= 1) { |
| | | // éè¯çè¯ä¸å®ä¼æå |
| | | b = true; |
| | | } |
| | | return new ProcessResult(b, "RESULT:" + b); |
| | | } |
| | | } |
| | | |
| | | @Getter |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public static class SubTask { |
| | | private Integer siteId; |
| | | private List<Integer> itemIds; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.google.common.collect.Lists; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | import lombok.NoArgsConstructor; |
| | | import lombok.ToString; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.common.serialize.JsonUtils; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.TaskResult; |
| | | import tech.powerjob.worker.core.processor.sdk.MapReduceProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.List; |
| | | import java.util.concurrent.ThreadLocalRandom; |
| | | |
| | | /** |
| | | * MapReduce å¤çå¨ç¤ºä¾ |
| | | * æ§å¶å°åæ°ï¼{"batchSize": 100, "batchNum": 2} |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/17 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class MapReduceProcessorDemo implements MapReduceProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | |
| | | OmsLogger omsLogger = context.getOmsLogger(); |
| | | |
| | | log.info("============== TestMapReduceProcessor#process =============="); |
| | | log.info("isRootTask:{}", isRootTask()); |
| | | log.info("taskContext:{}", JsonUtils.toJSONString(context)); |
| | | |
| | | // æ ¹æ®æ§å¶å°åæ°è·åMRæ¹æ¬¡ååä»»å¡å¤§å° |
| | | final JSONObject jobParams = JSONObject.parseObject(context.getJobParams()); |
| | | |
| | | Integer batchSize = (Integer) jobParams.getOrDefault("batchSize", 100); |
| | | Integer batchNum = (Integer) jobParams.getOrDefault("batchNum", 10); |
| | | |
| | | if (isRootTask()) { |
| | | log.info("==== MAP ===="); |
| | | omsLogger.info("[DemoMRProcessor] start root task~"); |
| | | List<TestSubTask> subTasks = Lists.newLinkedList(); |
| | | for (int j = 0; j < batchNum; j++) { |
| | | for (int i = 0; i < batchSize; i++) { |
| | | int x = j * batchSize + i; |
| | | subTasks.add(new TestSubTask("name" + x, x)); |
| | | } |
| | | map(subTasks, "MAP_TEST_TASK"); |
| | | subTasks.clear(); |
| | | } |
| | | omsLogger.info("[DemoMRProcessor] map success~"); |
| | | return new ProcessResult(true, "MAP_SUCCESS"); |
| | | } else { |
| | | log.info("==== NORMAL_PROCESS ===="); |
| | | omsLogger.info("[DemoMRProcessor] process subTask: {}.", JSON.toJSONString(context.getSubTask())); |
| | | log.info("subTask: {}", JsonUtils.toJSONString(context.getSubTask())); |
| | | Thread.sleep(1000); |
| | | if (context.getCurrentRetryTimes() == 0) { |
| | | return new ProcessResult(false, "FIRST_FAILED"); |
| | | } else { |
| | | return new ProcessResult(true, "PROCESS_SUCCESS"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ProcessResult reduce(TaskContext context, List<TaskResult> taskResults) { |
| | | log.info("================ MapReduceProcessorDemo#reduce ================"); |
| | | log.info("TaskContext: {}", JSONObject.toJSONString(context)); |
| | | log.info("List<TaskResult>: {}", JSONObject.toJSONString(taskResults)); |
| | | context.getOmsLogger().info("MapReduce job finished, result is {}.", taskResults); |
| | | |
| | | boolean success = ThreadLocalRandom.current().nextBoolean(); |
| | | return new ProcessResult(success, context + ": " + success); |
| | | } |
| | | |
| | | @Getter |
| | | @ToString |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public static class TestSubTask { |
| | | private String name; |
| | | private int age; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | | * @author Echo009 |
| | | * @since 2022/4/27 |
| | | */ |
| | | @Component |
| | | public class SimpleProcessor implements BasicProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | |
| | | OmsLogger logger = context.getOmsLogger(); |
| | | |
| | | String jobParams = Optional.ofNullable(context.getJobParams()).orElse("S"); |
| | | logger.info("Current context:{}", context.getWorkflowContext()); |
| | | logger.info("Current job params:{}", jobParams); |
| | | |
| | | // æµè¯ä¸æé®é¢ #581 |
| | | if (jobParams.contains("CN")) { |
| | | return new ProcessResult(true, "任塿åå¦ï¼ï¼ï¼"); |
| | | } |
| | | |
| | | return jobParams.contains("F") ? new ProcessResult(false) : new ProcessResult(true, "yeah!"); |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.Collections; |
| | | |
| | | /** |
| | | * åæºå¤çå¨ ç¤ºä¾ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/17 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class StandaloneProcessorDemo implements BasicProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | OmsLogger omsLogger = context.getOmsLogger(); |
| | | omsLogger.info("StandaloneProcessorDemo start process,context is {}.", context); |
| | | omsLogger.info("Notice! If you want this job process failed, your jobParams need to be 'failed'"); |
| | | omsLogger.info("Let's test the exception~"); |
| | | // æµè¯å¼å¸¸æ¥å¿ |
| | | try { |
| | | Collections.emptyList().add("277"); |
| | | } catch (Exception e) { |
| | | omsLogger.error("oh~it seems that we have an exception~", e); |
| | | } |
| | | log.info("================ StandaloneProcessorDemo#process ================"); |
| | | log.info("jobParam:{}", context.getJobParams()); |
| | | log.info("instanceParams:{}", context.getInstanceParams()); |
| | | String param; |
| | | // è§£æåæ°ï¼éå¤äºå·¥ä½æµä¸æ¶ï¼ä¼å
åå®ä¾åæ°ï¼å
è®¸å¨æ[instanceParams]è¦çéæåæ°[jobParams]ï¼ |
| | | if (context.getWorkflowContext() == null) { |
| | | param = StringUtils.isBlank(context.getInstanceParams()) ? context.getJobParams() : context.getInstanceParams(); |
| | | } else { |
| | | param = context.getJobParams(); |
| | | } |
| | | // æ ¹æ®åæ°å¤ææ¯å¦æå |
| | | boolean success = !"failed".equals(param); |
| | | omsLogger.info("StandaloneProcessorDemo finished process,success: {}", success); |
| | | omsLogger.info("anyway, we finished the job successfully~Congratulations!"); |
| | | return new ProcessResult(success, context + ": " + success); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.processors; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | |
| | | /** |
| | | * æµè¯è¶
æ¶ä»»å¡ï¼å¯ä¸æï¼ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/4/20 |
| | | */ |
| | | @Component |
| | | @Slf4j |
| | | public class TimeoutProcessor implements BasicProcessor { |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | long sleepTime = Long.parseLong(context.getJobParams()); |
| | | log.info("TaskInstance({}) will sleep {} ms", context.getInstanceId(), sleepTime); |
| | | Thread.sleep(Long.parseLong(context.getJobParams())); |
| | | return new ProcessResult(true, "impossible~~~~QAQ~"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.job.workflow; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | import tech.powerjob.worker.core.processor.ProcessResult; |
| | | import tech.powerjob.worker.core.processor.TaskContext; |
| | | import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
| | | import tech.powerjob.worker.log.OmsLogger; |
| | | |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 工使µæµè¯ |
| | | * |
| | | * @author tjq |
| | | * @since 2020/6/2 |
| | | */ |
| | | @Component |
| | | @Slf4j |
| | | public class WorkflowStandaloneProcessor implements BasicProcessor { |
| | | |
| | | @Override |
| | | public ProcessResult process(TaskContext context) throws Exception { |
| | | OmsLogger logger = context.getOmsLogger(); |
| | | logger.info("current jobParams: {}", context.getJobParams()); |
| | | logger.info("current context: {}", context.getWorkflowContext()); |
| | | log.info("jobParams:{}", context.getJobParams()); |
| | | log.info("currentContext:{}", JSON.toJSONString(context)); |
| | | |
| | | // å°è¯è·å䏿¸¸ä»»å¡ |
| | | Map<String, String> workflowContext = context.getWorkflowContext().fetchWorkflowContext(); |
| | | log.info("工使µä¸ä¸ææ°æ®:{}", workflowContext); |
| | | return new ProcessResult(true, context.getJobId() + " process successfully."); |
| | | } |
| | | } |
| | |
| | | privileged: true |
| | | network_mode: "host" |
| | | |
| | | ruoyi-xxl-job-admin: |
| | | image: ruoyi/ruoyi-xxl-job-admin:5.0.0 |
| | | container_name: ruoyi-xxl-job-admin |
| | | ruoyi-powerjob-server: |
| | | image: powerjob/powerjob-server:latest |
| | | restart: always |
| | | depends_on: |
| | | - mysql |
| | | environment: |
| | | # æ¶åºä¸æµ· |
| | | TZ: Asia/Shanghai |
| | | JVMOPTIONS: "-Xmx512m" |
| | | PARAMS: "--oms.mongodb.enable=false --spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai --spring.datasource.core.username=root --spring.datasource.core.password=root --oms.table-prefix=pj_" |
| | | ports: |
| | | - "7700:7700" |
| | | - "10086:10086" |
| | | - "10010:10010" |
| | | volumes: |
| | | # é
ç½®æä»¶ |
| | | - /docker/xxljob/logs/:/ruoyi/xxljob/logs |
| | | - /docker/powerjob-data/powerjob-server:/root/powerjob/server/ |
| | | privileged: true |
| | | network_mode: "host" |
| | | |
| | |
| | | server 127.0.0.1:9090; |
| | | } |
| | | |
| | | upstream xxljob-admin { |
| | | server 127.0.0.1:9100; |
| | | upstream powerjob { |
| | | server 127.0.0.1:7700; |
| | | } |
| | | |
| | | server { |
| | |
| | | } |
| | | |
| | | # https 伿¦æªå
龿æç http è¯·æ± é æåè½æ æ³ä½¿ç¨ |
| | | # è§£å³æ¹æ¡1 å° xxljob æå¡ ä¹é
ç½®æ https |
| | | # è§£å³æ¹æ¡1 å° powerjob æå¡ ä¹é
ç½®æ https |
| | | # è§£å³æ¹æ¡2 å°èåé
置为å¤é¾è®¿é® èµ°ç¬ç«é¡µé¢ http è®¿é® |
| | | location /xxl-job-admin/ { |
| | | location /powerjob/ { |
| | | proxy_set_header Host $http_host; |
| | | proxy_set_header X-Real-IP $remote_addr; |
| | | proxy_set_header REMOTE-HOST $remote_addr; |
| | | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| | | proxy_pass http://xxljob-admin/xxl-job-admin/; |
| | | proxy_pass http://powerjob/; |
| | | } |
| | | |
| | | error_page 500 502 503 504 /50x.html; |
| | |
| | | insert into sys_menu values('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, sysdate, null, null, 'Adminçæ§èå'); |
| | | -- ossèå |
| | | insert into sys_menu values('118', 'æä»¶ç®¡ç', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, sysdate, null, null, 'æä»¶ç®¡çèå'); |
| | | -- xxl-job-adminæ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'XxlJob', 'monitor/xxljob/index', '', 1, 0, 'C', '0', '0', 'monitor:xxljob:list', 'job', 103, 1, sysdate, null, null, 'Xxl-Jobæ§å¶å°èå'); |
| | | -- powerjob serveræ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'powerjob', 'monitor/powerjob/index', '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, sysdate, null, null, 'PowerJobæ§å¶å°èå'); |
| | | |
| | | -- ä¸çº§èå |
| | | insert into sys_menu values('500', 'æä½æ¥å¿', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate, null, null, 'æä½æ¥å¿èå'); |
| | |
| | | insert into sys_menu values('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', '1', '0', 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, now(), null, null, 'Adminçæ§èå'); |
| | | -- ossèå |
| | | insert into sys_menu values('118', 'æä»¶ç®¡ç', '1', '10', 'oss', 'system/oss/index', '', '1', '0', 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, now(), null, null, 'æä»¶ç®¡çèå'); |
| | | -- xxl-job-adminæ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'XxlJob', 'monitor/xxljob/index', '', '1', '0', 'C', '0', '0', 'monitor:xxljob:list', 'job', 103, 1, now(), null, null, 'Xxl-Jobæ§å¶å°èå'); |
| | | -- powerjob serveræ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'powerjob', 'monitor/powerjob/index', '', '1', '0', 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, now(), null, null, 'PowerJobæ§å¶å°èå'); |
| | | |
| | | -- ä¸çº§èå |
| | | insert into sys_menu values('500', 'æä½æ¥å¿', '108', '1', 'operlog', 'monitor/operlog/index', '', '1', '0', 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, now(), null, null, 'æä½æ¥å¿èå'); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | INSERT INTO `pj_app_info` (`id`, `app_name`, `current_server`, `gmt_create`, `gmt_modified`, `password`) VALUES (1, 'ruoyi-worker', '192.168.31.80:10010', '2023-06-13 16:32:59.263000', '2023-06-13 16:33:29.898000', 'ruoyi-worker'); |
| | | INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (1, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 2, 1, NULL, '2023-06-02 15:01:27.717000', '2023-06-02 16:03:19.462000', 1, 0, '', 'åæºå¤ç卿§è¡æµè¯', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.StandaloneProcessorDemo', 1, 1, NULL, 1, '30000', 3); |
| | | INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (2, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 2, NULL, '2023-06-02 15:04:45.342000', '2023-06-02 16:04:09.736000', 0, 0, NULL, '广æå¤ç卿µè¯', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.BroadcastProcessorDemo', 1, 1, NULL, 1, '30000', 3); |
| | | INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (3, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 4, NULL, '2023-06-02 15:13:23.519000', '2023-06-02 16:03:22.421000', 0, 0, NULL, 'Mapå¤ç卿µè¯', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.MapProcessorDemo', 1, 2, NULL, 1, '1000', 3); |
| | | INSERT INTO `pj_job_info` (`id`, `alarm_config`, `app_id`, `concurrency`, `designated_workers`, `dispatch_strategy`, `execute_type`, `extra`, `gmt_create`, `gmt_modified`, `instance_retry_num`, `instance_time_limit`, `job_description`, `job_name`, `job_params`, `lifecycle`, `log_config`, `max_instance_num`, `max_worker_count`, `min_cpu_cores`, `min_disk_space`, `min_memory_space`, `next_trigger_time`, `notify_user_ids`, `processor_info`, `processor_type`, `status`, `tag`, `task_retry_num`, `time_expression`, `time_expression_type`) VALUES (4, '{\"alertThreshold\":0,\"silenceWindowLen\":0,\"statisticWindowLen\":0}', 1, 5, '', 1, 3, NULL, '2023-06-02 15:45:25.896000', '2023-06-02 16:03:23.125000', 0, 0, NULL, 'MapReduceå¤ç卿µè¯', NULL, '{}', '{\"type\":1}', 0, 0, 0, 0, 0, NULL, NULL, 'org.dromara.job.processors.MapReduceProcessorDemo', 1, 2, NULL, 1, '1000', 3); |
| | |
| | | insert into sys_menu values('117', 'Adminçæ§', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, sysdate(), null, null, 'Adminçæ§èå'); |
| | | -- ossèå |
| | | insert into sys_menu values('118', 'æä»¶ç®¡ç', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, sysdate(), null, null, 'æä»¶ç®¡çèå'); |
| | | -- xxl-job-adminæ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'XxlJob', 'monitor/xxljob/index', '', 1, 0, 'C', '0', '0', 'monitor:xxljob:list', 'job', 103, 1, sysdate(), null, null, 'Xxl-Jobæ§å¶å°èå'); |
| | | -- powerjob serveræ§å¶å° |
| | | insert into sys_menu values('120', 'ä»»å¡è°åº¦ä¸å¿', '2', '5', 'powerjob', 'monitor/powerjob/index', '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, sysdate(), null, null, 'PowerJobæ§å¶å°èå'); |
| | | |
| | | -- ä¸çº§èå |
| | | insert into sys_menu values('500', 'æä½æ¥å¿', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate(), null, null, 'æä½æ¥å¿èå'); |
| | |
| | | GO |
| | | INSERT sys_menu VALUES (118, N'æä»¶ç®¡ç', 1, 10, N'oss', N'system/oss/index', N'', 1, 0, N'C', '0', N'0', N'system:oss:list', N'upload', 103, 1, getdate(), NULL, NULL, N'æä»¶ç®¡çèå'); |
| | | GO |
| | | INSERT sys_menu VALUES (120, N'ä»»å¡è°åº¦ä¸å¿', 2, 5, N'XxlJob', N'monitor/xxljob/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:xxljob:list', N'job', 103, 1, getdate(), NULL, NULL, N'Xxl-Jobæ§å¶å°èå'); |
| | | INSERT sys_menu VALUES (120, N'ä»»å¡è°åº¦ä¸å¿', 2, 5, N'powerjob', N'monitor/powerjob/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:powerjob:list', N'job', 103, 1, getdate(), NULL, NULL, N'PowerJobæ§å¶å°èå'); |
| | | GO |
| | | INSERT sys_menu VALUES (500, N'æä½æ¥å¿', 108, 1, N'operlog', N'monitor/operlog/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:operlog:list', N'form', 103, 1, getdate(), NULL, NULL, N'æä½æ¥å¿èå') |
| | | GO |