把主工程里的xxl-job拷贝了一份到biz工程里运行,有些疑问

Blade 未结 1 1868
菲哥
菲哥 剑圣 2020-01-19 19:26

一、该问题的重现步骤是什么?

1. 我下载了一个v2.3.0的biz工程,并且拷贝了一份主工程下的xxl-job的服务,挪了一份到biz工程里

2. 一开始配置调试不通,后来我发现必须在nacos上给我建的这个xxl-job的服务配置一个数据库连接项指向xxl-job的数据库才能正常运行。

3.目前biz工程里的xxl-job服务可以正常运行,也能接受xxl-job-admin的调度调用。


但是,调通后我也有些问题想问下翼总。


二、你期待的结果是什么?实际看到的又是什么?

  1. 因为目前放在biz工程里的,对于我的应用场景只能满足一部分需求。如果我需要在其他外网的服务器上部署xxl-job的执行器是否可行?因为,我的应用场景需要控制或者安排,在客户的服务器上(有可能是外网),去按照特定的需求去收集和调用一些操作。如果使用bladex集成的这些体系的东西,究竟用什么可以实现满足这种场景应用。

  2. 我原本以为xxl-job可以实现协调外网的服务器,可是如果执行器还要连中央数据库(直连的话),这种似乎针对我这种需求就不合适。所以,想咨询下xxl-job是否可以应用在我这种场景,或者有什么更好的方式方法。

  3. 另外,xxl-job的执行器为什么必须要连数据库,是因为调度命令和数据其实都是通过数据库传递的吗?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex v2.3.0


四、请提供详细的错误堆栈信息,这很重要。

2020-01-19 19:24:51.183  INFO 3484 --- [           main] io.undertow                              : starting server: Undertow - 2.0.28.Final

2020-01-19 19:24:51.194  INFO 3484 --- [           main] org.xnio                                 : XNIO version 3.3.8.Final

2020-01-19 19:24:51.211  INFO 3484 --- [           main] org.xnio.nio                             : XNIO NIO Implementation Version 3.3.8.Final

2020-01-19 19:24:51.308  INFO 3484 --- [           main] o.s.b.w.e.u.UndertowServletWebServer     : Undertow started on port(s) 7008 (http) with context path ''

2020-01-19 19:24:51.404  INFO 3484 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP blade-kxk-proxy-xxljob 192.168.31.113:7008 register finished

2020-01-19 19:24:51.419  INFO 3484 --- [           main] c.c.k.executor.KxkProxyJobApplication    : Started KxkProxyJobApplication in 17.611 seconds (JVM running for 19.541)

2020-01-19 19:24:51.426  INFO 3484 --- [         task-1] o.s.core.launch.StartEventListener       : ---[BLADE-KXK-PROXY-XXLJOB]---启动完成,当前使用的端口:[7008],环境变量:[dev]---

INFO: log output type is: file

INFO: log charset is: utf-8

INFO: log base dir is: /Users/mac/logs/csp/

INFO: log name use pid is: false

2020-01-19 19:24:54.456  INFO 3484 --- [on(8)-127.0.0.1] io.undertow.servlet                      : Initializing Spring DispatcherServlet 'dispatcherServlet'

2020-01-19 19:24:54.456  INFO 3484 --- [on(8)-127.0.0.1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'

2020-01-19 19:24:54.534  INFO 3484 --- [on(8)-127.0.0.1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 78 ms

2020-01-19 19:24:55.213  INFO 3484 --- [     parallel-1] io.lettuce.core.EpollProvider            : Starting without optional epoll library

2020-01-19 19:24:55.247  INFO 3484 --- [     parallel-1] io.lettuce.core.KqueueProvider           : Starting with kqueue library


五、若有更多详细信息,请在下面提供。



1条回答
  • 2020-01-20 14:08

     1. 可以在外网调度,但是前提是两个程序网络可以相互联通

     2、3. xxljob-admin是需要依赖数据库的,任何中间件都有很多配置,如果没有数据库支撑,是没法运行的

     

    其实也不用只考虑只有一个xxljob-admin核心服务的情况,它只是起到任务调度的作用。如果分隔多地,也可以建立多个xxljob-admin,把他们分开来操作。

    如果一定只能有一个中心的xxljob-admin,那么只需要保证服务相互联通即可

    作者追问:2020-01-20 16:50

    xxl-job-admin服务需要数据库,这是合理的。我问的是执行器xxl-job的服务,也需要数据库支撑吗?我看你的调用处理控制器里,有:

    ()
    ReturnT (String param) Exception {
    
       HttpURLConnection connection = BufferedReader bufferedReader = {
          URL realUrl = URL(param)connection = (HttpURLConnection) realUrl.openConnection()connection.setRequestMethod()connection.setDoOutput()connection.setDoInput()connection.setUseCaches()connection.setReadTimeout(* )connection.setConnectTimeout(* )connection.setRequestProperty()connection.setRequestProperty()connection.setRequestProperty()


    这个就是跨网的处理逻辑吧。执行器也必须有数据库支撑吗。

    作者追问:2020-01-20 16:52

    ()
    ReturnT (String param) Exception {


    回答: 2020-01-20 22:26

    这个服务不一定要数据库,可以不连数据库单纯执行操作。这些都是要看具体业务场景的。

    一些定时操作结束,一般都是要把结果再回插到数据库,所以我默认链接了

    如果不需要,直接把数据库模块去掉就行

    0 讨论(2)
提交回复