当前位置: 首页 > 知识库问答 >
问题:

模块化作业定义

缑泓
2023-03-14

以下是我正在努力实现的目标:

  1. 批处理作业服务器,为我的应用程序的作业提供一个统一的入口点,并为作业提供一个集中的运行位置,它构建在Spring batch的基础上
  2. 不同的应用程序可以创建自己的作业包,并在批处理作业服务器下“部署”。“bundle”将包含作业定义、依赖项jar等。
  3. 应用程序作业捆绑包应该是自包含的:两个作业捆绑包可以具有相同类的不同版本(也就是说,对于不同的捆绑包,最好有单独的类加载器),因此开发人员很少需要担心其他应用程序的作业
  4. 不需要热部署。我可以接受停止批处理作业服务器应用程序、部署新包、进行一些配置,然后再次启动服务器

简而言之,它就像Spring Batch作业的插件系统。

到目前为止,我使用Spring Batch的方式是构建一个应用程序,作业定义是应用程序的一部分(要么是应用程序源的一部分,要么是依赖项)。但是,当我试图让一台批处理服务器为多个应用程序提供服务时,我遇到了一些问题,例如,当应用程序1需要对其作业进行微小更改时,我需要释放整个服务器(其中包括来自其他应用程序的作业)。我想看看是否:

  1. 是否有Spring Batch等现有解决方案

共有1个答案

芮歌者
2023-03-14

听起来你正在寻找的是Spring XD(http://projects.spring.io/spring-xd/)。要逐点浏览您的项目:

  1. 批处理作业服务器为我的应用程序的作业提供一个统一的入口点,并为作业提供一个集中的运行位置,它构建在Spring batch之上——Spring XD是一个基于Spring batch和Spring集成的分布式运行时。它提供了一个中心位置,用于管理作业部署、将作业部署到何处、启动作业、浏览作业存储库等。您可以通过交互式shell、web UI或前面两个选项都使用的REST API进行交互
  2. 不同的应用程序可以创建自己的作业包,并在批处理作业服务器下“部署”。“bundle”将包含作业定义、依赖项jar等——Spring XD使用Spring Boot作为打包机制。使用一个特殊的插件(maven和gradle都受支持),您可以将作业打包到一个胖jar中,就像将其作为一个可执行的Spring Bootjar执行一样,其中包含作业定义和所有必需的依赖项。虽然目前的结构是每个工件一个作业(因此每个Spring Boot jar一个作业),Spring XD团队正在致力于能够在更大的分组中移动多个模块(在您的情况下是作业)
  3. 应用程序作业捆绑包应该是自包含的:两个作业捆绑包可以具有相同类的不同版本(即,最好为不同的捆绑包提供单独的类加载器),这样开发人员就不需要担心其他应用程序的作业。-Spring XD支持所有这些。每个模块都有自己的类加载器,可以指定自己的独立依赖项
  4. 不需要热部署。我可以接受停止批处理作业服务器应用程序、部署新包、进行一些配置,然后再次启动服务器。Spring XD支持热部署

我强烈建议你看看Spring XD,看看你在寻找什么。听起来和你想要的一模一样。

 类似资料:
  • 我希望在我的应用程序中定义多个,并尝试将它们模块化,如下所示: 从sysout中,我可以看到创建了两个作业bean。 那么为什么找不到读者呢?我的意思是:除了将bean方法本身命名为,并将其注入变量名之外,我还能做些什么呢? SideNote:当我删除模块化并在上使用时,job运行良好。所以我很确定作业和阅读器的配置应该是正确的。但是当然我不能在下面运行类似的jobclass,所以我希望启用模块化

  • CommonJS AMD CMD UMD ES Modules

  • 1. required 引入模块。返回模块通过 module.exports 或 exports 暴露的接口。 参数 名称 类型 说明 path string 需要引入模块文件相对于当前文件的相对路径,或npm模块名,或npm模块路径。不支持绝对路径 示例代码 // common.js function sayHello(name) { console.log(`Hello ${name} !

  • 文件作用域 在.js 文件中声明的变量和方法只在当前文件中有效;不同的文件中可以声明相同名字的变量和方法。 通过全局函数 getApp() 可以获取全局的应用实例,如果需要全局的数据可以在 App() 中设置,如: // app.js App({ globalData: "cortana" }) 模块化 可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 modu

  • 模块 模块是任何健壮的应用程序体系结构不可或缺的一部分,特点是有助于保持应用项目的代码单元既能清晰地分离又有组织。 在JavaScript中,实现模块有几个选项,他们包括: 模块化模式 对象表示法 AMD模块 CommonJS 模块 ECMAScript Harmony 模块 我们在书中后面的现代模块化JavaScript设计模式章节中将探讨这些选项中的最后三个。 模块化模式是基于对象的文字部分,

  • 例如,我希望将我的套接字路由和拆分为不同的文件,但仍然可以使用回调参数,如下所示: 到目前为止,它们都在一个文件中,我不喜欢这样。