瀏覽代碼

升级 xxl-rpc 依赖;

xuxueli 6 年之前
父節點
當前提交
d54d679edb

+ 1 - 1
doc/XXL-JOB官方文档.md 查看文件

1396
 - 1、调度中心告警邮件发送组件改为 “spring-boot-starter-mail”;
1396
 - 1、调度中心告警邮件发送组件改为 “spring-boot-starter-mail”;
1397
 - 2、任务告警逻辑调整,改为通过扫描失败日志方式触发。一方面精确扫描失败任务,降低扫描范围;另一方面取消内存队列,降低线程内存消耗;
1397
 - 2、任务告警逻辑调整,改为通过扫描失败日志方式触发。一方面精确扫描失败任务,降低扫描范围;另一方面取消内存队列,降低线程内存消耗;
1398
 - 3、记住密码功能优化,选中时永久记住;非选中时关闭浏览器即登出;
1398
 - 3、记住密码功能优化,选中时永久记住;非选中时关闭浏览器即登出;
1399
-- 4、项目依赖升级至较新稳定版本,如spring、jackson、groovy等等;
1399
+- 4、项目依赖升级至较新稳定版本,如spring、jackson、groovy、xxl-rpc等等;
1400
 - 5、精简项目,取消第三方依赖,如 commons-collections4 ;
1400
 - 5、精简项目,取消第三方依赖,如 commons-collections4 ;
1401
 - [迭代中]注册中心优化,实时性注册发现:心跳注册间隔10s,refresh失败则首次注册并立即更新注册信息,心跳类似;30s过期销毁;
1401
 - [迭代中]注册中心优化,实时性注册发现:心跳注册间隔10s,refresh失败则首次注册并立即更新注册信息,心跳类似;30s过期销毁;
1402
 - [迭代中]脚本任务,支持数据参数,新版本仅支持单参数不支持需要兼容;
1402
 - [迭代中]脚本任务,支持数据参数,新版本仅支持单参数不支持需要兼容;

+ 2 - 2
pom.xml 查看文件

24
 		<maven.compiler.target>1.7</maven.compiler.target>
24
 		<maven.compiler.target>1.7</maven.compiler.target>
25
 		<maven.test.skip>true</maven.test.skip>
25
 		<maven.test.skip>true</maven.test.skip>
26
 
26
 
27
-		<xxl-rpc.version>1.2.1</xxl-rpc.version>
27
+		<xxl-rpc.version>1.3.1</xxl-rpc.version>
28
+		<jetty-server.version>9.2.26.v20180806</jetty-server.version>
28
 
29
 
29
 		<spring-boot.version>1.5.18.RELEASE</spring-boot.version>
30
 		<spring-boot.version>1.5.18.RELEASE</spring-boot.version>
30
 		<mybatis-spring-boot-starter.version>1.3.2</mybatis-spring-boot-starter.version>
31
 		<mybatis-spring-boot-starter.version>1.3.2</mybatis-spring-boot-starter.version>
42
 		<quartz.version>2.3.0</quartz.version>
43
 		<quartz.version>2.3.0</quartz.version>
43
 
44
 
44
 		<jackson.version>2.9.8</jackson.version>
45
 		<jackson.version>2.9.8</jackson.version>
45
-		<jetty-server.version>9.2.26.v20180806</jetty-server.version>
46
 
46
 
47
 	</properties>
47
 	</properties>
48
 
48
 

+ 22 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java 查看文件

13
 import com.xxl.rpc.remoting.invoker.XxlRpcInvokerFactory;
13
 import com.xxl.rpc.remoting.invoker.XxlRpcInvokerFactory;
14
 import com.xxl.rpc.remoting.invoker.call.CallType;
14
 import com.xxl.rpc.remoting.invoker.call.CallType;
15
 import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
15
 import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
16
+import com.xxl.rpc.remoting.invoker.route.LoadBalance;
16
 import com.xxl.rpc.remoting.net.NetEnum;
17
 import com.xxl.rpc.remoting.net.NetEnum;
17
 import com.xxl.rpc.remoting.net.impl.jetty.server.JettyServerHandler;
18
 import com.xxl.rpc.remoting.net.impl.jetty.server.JettyServerHandler;
18
 import com.xxl.rpc.remoting.provider.XxlRpcProviderFactory;
19
 import com.xxl.rpc.remoting.provider.XxlRpcProviderFactory;
98
     private void initRpcProvider(){
99
     private void initRpcProvider(){
99
         // init
100
         // init
100
         XxlRpcProviderFactory xxlRpcProviderFactory = new XxlRpcProviderFactory();
101
         XxlRpcProviderFactory xxlRpcProviderFactory = new XxlRpcProviderFactory();
101
-        xxlRpcProviderFactory.initConfig(NetEnum.JETTY, Serializer.SerializeEnum.HESSIAN.getSerializer(), null, 0, XxlJobAdminConfig.getAdminConfig().getAccessToken(), null, null);
102
+        xxlRpcProviderFactory.initConfig(
103
+                NetEnum.JETTY,
104
+                Serializer.SerializeEnum.HESSIAN.getSerializer(),
105
+                null,
106
+                0,
107
+                XxlJobAdminConfig.getAdminConfig().getAccessToken(),
108
+                null,
109
+                null);
102
 
110
 
103
         // add services
111
         // add services
104
         xxlRpcProviderFactory.addService(AdminBiz.class.getName(), null, XxlJobAdminConfig.getAdminConfig().getAdminBiz());
112
         xxlRpcProviderFactory.addService(AdminBiz.class.getName(), null, XxlJobAdminConfig.getAdminConfig().getAdminBiz());
107
         jettyServerHandler = new JettyServerHandler(xxlRpcProviderFactory);
115
         jettyServerHandler = new JettyServerHandler(xxlRpcProviderFactory);
108
     }
116
     }
109
     private void stopRpcProvider() throws Exception {
117
     private void stopRpcProvider() throws Exception {
110
-        new XxlRpcInvokerFactory().stop();
118
+        XxlRpcInvokerFactory.getInstance().stop();
111
     }
119
     }
112
     public static void invokeAdminService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
120
     public static void invokeAdminService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
113
         jettyServerHandler.handle(null, new Request(null, null), request, response);
121
         jettyServerHandler.handle(null, new Request(null, null), request, response);
130
         }
138
         }
131
 
139
 
132
         // set-cache
140
         // set-cache
133
-        executorBiz = (ExecutorBiz) new XxlRpcReferenceBean(NetEnum.JETTY, Serializer.SerializeEnum.HESSIAN.getSerializer(), CallType.SYNC,
134
-                ExecutorBiz.class, null, 10000, address, XxlJobAdminConfig.getAdminConfig().getAccessToken(), null).getObject();
141
+        executorBiz = (ExecutorBiz) new XxlRpcReferenceBean(
142
+                NetEnum.JETTY,
143
+                Serializer.SerializeEnum.HESSIAN.getSerializer(),
144
+                CallType.SYNC,
145
+                LoadBalance.ROUND,
146
+                ExecutorBiz.class,
147
+                null,
148
+                10000,
149
+                address,
150
+                XxlJobAdminConfig.getAdminConfig().getAccessToken(),
151
+                null,
152
+                null).getObject();
135
 
153
 
136
         executorBizRepository.put(address, executorBiz);
154
         executorBizRepository.put(address, executorBiz);
137
         return executorBiz;
155
         return executorBiz;

+ 25 - 4
xxl-job-admin/src/test/java/com/xxl/job/adminbiz/AdminBizTest.java 查看文件

6
 import com.xxl.job.core.enums.RegistryConfig;
6
 import com.xxl.job.core.enums.RegistryConfig;
7
 import com.xxl.rpc.remoting.invoker.call.CallType;
7
 import com.xxl.rpc.remoting.invoker.call.CallType;
8
 import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
8
 import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
9
+import com.xxl.rpc.remoting.invoker.route.LoadBalance;
9
 import com.xxl.rpc.remoting.net.NetEnum;
10
 import com.xxl.rpc.remoting.net.NetEnum;
10
 import com.xxl.rpc.serialize.Serializer;
11
 import com.xxl.rpc.serialize.Serializer;
11
 import org.junit.Assert;
12
 import org.junit.Assert;
30
     @Test
31
     @Test
31
     public void registryTest() throws Exception {
32
     public void registryTest() throws Exception {
32
         addressUrl = addressUrl.replace("http://", "");
33
         addressUrl = addressUrl.replace("http://", "");
33
-        AdminBiz adminBiz = (AdminBiz) new XxlRpcReferenceBean(NetEnum.JETTY, Serializer.SerializeEnum.HESSIAN.getSerializer(), CallType.SYNC,
34
-                AdminBiz.class, null, 10000, addressUrl, accessToken, null).getObject();
34
+        AdminBiz adminBiz = (AdminBiz) new XxlRpcReferenceBean(
35
+                NetEnum.JETTY,
36
+                Serializer.SerializeEnum.HESSIAN.getSerializer(),
37
+                CallType.SYNC,
38
+                LoadBalance.ROUND,
39
+                AdminBiz.class,
40
+                null,
41
+                10000,
42
+                addressUrl,
43
+                accessToken,
44
+                null,
45
+                null).getObject();
35
 
46
 
36
         // test executor registry
47
         // test executor registry
37
         RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), "xxl-job-executor-example", "127.0.0.1:9999");
48
         RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), "xxl-job-executor-example", "127.0.0.1:9999");
47
     @Test
58
     @Test
48
     public void registryRemove() throws Exception {
59
     public void registryRemove() throws Exception {
49
         addressUrl = addressUrl.replace("http://", "");
60
         addressUrl = addressUrl.replace("http://", "");
50
-        AdminBiz adminBiz = (AdminBiz) new XxlRpcReferenceBean(NetEnum.JETTY, Serializer.SerializeEnum.HESSIAN.getSerializer(), CallType.SYNC,
51
-                AdminBiz.class, null, 10000, addressUrl, accessToken, null).getObject();
61
+        AdminBiz adminBiz = (AdminBiz) new XxlRpcReferenceBean(
62
+                NetEnum.JETTY,
63
+                Serializer.SerializeEnum.HESSIAN.getSerializer(),
64
+                CallType.SYNC,
65
+                LoadBalance.ROUND,
66
+                AdminBiz.class,
67
+                null,
68
+                10000,
69
+                addressUrl,
70
+                accessToken,
71
+                null,
72
+                null).getObject();
52
 
73
 
53
         // test executor registry remove
74
         // test executor registry remove
54
         RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), "xxl-job-executor-example", "127.0.0.1:9999");
75
         RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), "xxl-job-executor-example", "127.0.0.1:9999");

+ 13 - 2
xxl-job-admin/src/test/java/com/xxl/job/executor/ExecutorBizTest.java 查看文件

7
 import com.xxl.job.core.glue.GlueTypeEnum;
7
 import com.xxl.job.core.glue.GlueTypeEnum;
8
 import com.xxl.rpc.remoting.invoker.call.CallType;
8
 import com.xxl.rpc.remoting.invoker.call.CallType;
9
 import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
9
 import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
10
+import com.xxl.rpc.remoting.invoker.route.LoadBalance;
10
 import com.xxl.rpc.remoting.net.NetEnum;
11
 import com.xxl.rpc.remoting.net.NetEnum;
11
 import com.xxl.rpc.serialize.Serializer;
12
 import com.xxl.rpc.serialize.Serializer;
12
 
13
 
47
 
48
 
48
         // do remote trigger
49
         // do remote trigger
49
         String accessToken = null;
50
         String accessToken = null;
50
-        ExecutorBiz executorBiz = (ExecutorBiz) new XxlRpcReferenceBean(NetEnum.JETTY, Serializer.SerializeEnum.HESSIAN.getSerializer(), CallType.SYNC,
51
-                ExecutorBiz.class, null, 10000, "127.0.0.1:9999", null, null).getObject();
51
+        ExecutorBiz executorBiz = (ExecutorBiz) new XxlRpcReferenceBean(
52
+                NetEnum.JETTY,
53
+                Serializer.SerializeEnum.HESSIAN.getSerializer(),
54
+                CallType.SYNC,
55
+                LoadBalance.ROUND,
56
+                ExecutorBiz.class,
57
+                null,
58
+                10000,
59
+                "127.0.0.1:9999",
60
+                null,
61
+                null,
62
+                null).getObject();
52
 
63
 
53
         ReturnT<String> runResult = executorBiz.run(triggerParam);
64
         ReturnT<String> runResult = executorBiz.run(triggerParam);
54
     }
65
     }

+ 20 - 0
xxl-job-core/pom.xml 查看文件

20
 			<groupId>com.xuxueli</groupId>
20
 			<groupId>com.xuxueli</groupId>
21
 			<artifactId>xxl-rpc-core</artifactId>
21
 			<artifactId>xxl-rpc-core</artifactId>
22
 			<version>${xxl-rpc.version}</version>
22
 			<version>${xxl-rpc.version}</version>
23
+			<exclusions>
24
+				<exclusion>
25
+					<groupId>io.netty</groupId>
26
+					<artifactId>netty-all</artifactId>
27
+				</exclusion>
28
+				<exclusion>
29
+					<groupId>org.apache.commons</groupId>
30
+					<artifactId>commons-pool2</artifactId>
31
+				</exclusion>
32
+			</exclusions>
33
+		</dependency>
34
+		<dependency>
35
+			<groupId>org.eclipse.jetty</groupId>
36
+			<artifactId>jetty-server</artifactId>
37
+			<version>${jetty-server.version}</version>
38
+		</dependency>
39
+		<dependency>
40
+			<groupId>org.eclipse.jetty</groupId>
41
+			<artifactId>jetty-client</artifactId>
42
+			<version>${jetty-server.version}</version>
23
 		</dependency>
43
 		</dependency>
24
 
44
 
25
 		<!-- groovy-all -->
45
 		<!-- groovy-all -->

+ 22 - 9
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java 查看文件

13
 import com.xxl.rpc.remoting.invoker.XxlRpcInvokerFactory;
13
 import com.xxl.rpc.remoting.invoker.XxlRpcInvokerFactory;
14
 import com.xxl.rpc.remoting.invoker.call.CallType;
14
 import com.xxl.rpc.remoting.invoker.call.CallType;
15
 import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
15
 import com.xxl.rpc.remoting.invoker.reference.XxlRpcReferenceBean;
16
+import com.xxl.rpc.remoting.invoker.route.LoadBalance;
16
 import com.xxl.rpc.remoting.net.NetEnum;
17
 import com.xxl.rpc.remoting.net.NetEnum;
17
 import com.xxl.rpc.remoting.provider.XxlRpcProviderFactory;
18
 import com.xxl.rpc.remoting.provider.XxlRpcProviderFactory;
18
 import com.xxl.rpc.serialize.Serializer;
19
 import com.xxl.rpc.serialize.Serializer;
113
 
114
 
114
                     String addressUrl = address.concat(AdminBiz.MAPPING);
115
                     String addressUrl = address.concat(AdminBiz.MAPPING);
115
 
116
 
116
-                    AdminBiz adminBiz = (AdminBiz) new XxlRpcReferenceBean(NetEnum.JETTY, Serializer.SerializeEnum.HESSIAN.getSerializer(), CallType.SYNC,
117
-                            AdminBiz.class, null, 10000, addressUrl, accessToken, null).getObject();
117
+                    AdminBiz adminBiz = (AdminBiz) new XxlRpcReferenceBean(
118
+                            NetEnum.JETTY,
119
+                            Serializer.SerializeEnum.HESSIAN.getSerializer(),
120
+                            CallType.SYNC,
121
+                            LoadBalance.ROUND,
122
+                            AdminBiz.class,
123
+                            null,
124
+                            10000,
125
+                            addressUrl,
126
+                            accessToken,
127
+                            null,
128
+                            null
129
+                    ).getObject();
118
 
130
 
119
                     if (adminBizList == null) {
131
                     if (adminBizList == null) {
120
                         adminBizList = new ArrayList<AdminBiz>();
132
                         adminBizList = new ArrayList<AdminBiz>();
130
 
142
 
131
 
143
 
132
     // ---------------------- executor-server (rpc provider) ----------------------
144
     // ---------------------- executor-server (rpc provider) ----------------------
133
-    private XxlRpcInvokerFactory xxlRpcInvokerFactory = null;
134
     private XxlRpcProviderFactory xxlRpcProviderFactory = null;
145
     private XxlRpcProviderFactory xxlRpcProviderFactory = null;
135
 
146
 
136
     private void initRpcProvider(String ip, int port, String appName, String accessToken) throws Exception {
147
     private void initRpcProvider(String ip, int port, String appName, String accessToken) throws Exception {
137
-        // init invoker factory
138
-        xxlRpcInvokerFactory = new XxlRpcInvokerFactory();
139
 
148
 
140
         // init, provider factory
149
         // init, provider factory
141
         String address = IpUtil.getIpPort(ip, port);
150
         String address = IpUtil.getIpPort(ip, port);
150
         xxlRpcProviderFactory.addService(ExecutorBiz.class.getName(), null, new ExecutorBizImpl());
159
         xxlRpcProviderFactory.addService(ExecutorBiz.class.getName(), null, new ExecutorBizImpl());
151
 
160
 
152
         // start
161
         // start
153
-       xxlRpcProviderFactory.start();
162
+        xxlRpcProviderFactory.start();
154
 
163
 
155
     }
164
     }
156
 
165
 
168
         }
177
         }
169
 
178
 
170
         @Override
179
         @Override
171
-        public boolean registry(String key, String value) {
180
+        public boolean registry(Set<String> keys, String value) {
172
             return false;
181
             return false;
173
         }
182
         }
174
         @Override
183
         @Override
175
-        public boolean remove(String key, String value) {
184
+        public boolean remove(Set<String> keys, String value) {
176
             return false;
185
             return false;
177
         }
186
         }
178
         @Override
187
         @Override
188
+        public Map<String, TreeSet<String>> discovery(Set<String> keys) {
189
+            return null;
190
+        }
191
+        @Override
179
         public TreeSet<String> discovery(String key) {
192
         public TreeSet<String> discovery(String key) {
180
             return null;
193
             return null;
181
         }
194
         }
185
     private void stopRpcProvider() {
198
     private void stopRpcProvider() {
186
         // stop invoker factory
199
         // stop invoker factory
187
         try {
200
         try {
188
-            xxlRpcInvokerFactory.stop();
201
+            XxlRpcInvokerFactory.getInstance().stop();
189
         } catch (Exception e) {
202
         } catch (Exception e) {
190
             logger.error(e.getMessage(), e);
203
             logger.error(e.getMessage(), e);
191
         }
204
         }