[xuxueli/xxl-job]如何手工指定执行器端口范围

2023-12-14 251 views
6
Which version of XXL-JOB do you using?

2.3.1

Expected behavior

通过XxlJobSpringExecutor可以指定端口范围,执行器启动后注册到指定范围的端口

Actual behavior

XxlJobSpringExecutor只支持单个端口设置

Steps to reproduce the behavior

新建springboot为执行器,通过@Bean的方式配置XxlJobSpringExecutor,并新建一个job,注册到的调度中心

Other information

回答

5

这不是一个很好的需求,哈哈,注册的时候不确定端口号会增加交互的复杂度,每次重启需要重新确定端口号,也可能会导致随机的端口号存在冲突。

8

感谢回复,不过我认为这个理由比较牵强,因为xxl-job在启动时如果不指定端口号,自身也会根据自己的规则随机注册一个端口。 我这个需求是出于这样的场景:假设我有三个机器,一个master,两个slave,master部署调度中心,两个slave上各部署的有n个执行器服务,我需要根据端口范围来定制三台机器间的网络策略。而为每个执行器确定一个唯一的端口不利于快速扩容,目前的机器配置不支持部署k8s进行扩容。

3

xxl-job现在支持指定端口和随机端口,但是不能支持某个范围内的端口。

  • 指定端口这种的情况就不用说了;
  • 随机端口的话,是如果不填写指定端口
    • 会从9999这个端口号,先从9999-65535中选择一个可用端口号;
    • 如果找不到,会从0-9999中选择一个可用端口号; 基于以上,如果想限制一个范围的话,可能需要改代码。
7

Sorry,我重新看了一下你的问题。可能是我理解有误,你的想法应该是想要在同一个应用中,部署多个执行器,每个执行器使用的端口号在一个指定范围内。这种方式可能不太好实现,因为执行器的端口号是内置的Http服务器确定的,你如果想每个执行器用的端口号不一样,那就相当于,需要启动多个Http服务器。对于你的应用来说,这个开销是很大的。

6

我是想法是在同一个服务器上部署多个执行器,每一个执行器都是springboot服务,多个执行器是基于这个springboot服务横向扩容出来的。不过既然没法手工指定范围的我考虑下如何自行实现,感谢解答。

6

那如果是这种的话,改动就很简单了,增加一个端口号范围即可。