我無法從文檔中獲取信息。任何人都可以告訴我Spring-XD如何執行作業?它是否將作業分配給某個容器,並且該作業是僅在其部署到的容器上執行的,還是將每個作業執行分配給另一個容器?我能以某種方式控制某個工作可以並行執行(使用不同的參數),而其他人則不可以?Spring-XD如何處理作業
謝謝! 彼得
我無法從文檔中獲取信息。任何人都可以告訴我Spring-XD如何執行作業?它是否將作業分配給某個容器,並且該作業是僅在其部署到的容器上執行的,還是將每個作業執行分配給另一個容器?我能以某種方式控制某個工作可以並行執行(使用不同的參數),而其他人則不可以?Spring-XD如何處理作業
謝謝! 彼得
我相信你會看到一些文件在這裏: https://github.com/spring-projects/spring-xd/wiki/Batch-Jobs
回答您的問題:
誰能告訴我如何在Spring-XD執行作業?它是否將作業分配給某個容器,並且該作業是僅在其部署到的容器上執行的,還是將每個作業執行分配給另一個容器?
後您創建使用此新的作業定義:
xd>job create dailyfeedjob --definition "myfeedjobmodule" --deploy
批作業模塊myfeedjobmodule
被部署到XD容器。部署完成後,消息代理中會有一個啓動隊列設置:redis,rabbit或local。消息代理中隊列的名稱是job:dailyfeedjob
。由於此隊列綁定到XD容器中部署的作業模塊,因此發送到此隊列的請求消息由部署在該特定容器內的作業模塊選取。
現在,您可以通過設置將消息發送到此隊列的流,將作業啓動請求消息(包含作業參數)發送到job:dailyfeedjob
隊列中。例如:觸發器(固定延遲,cron,日期觸發器)可以做到這一點。這也是一個來自僅啓動作業一次的shell的job launch
命令。 本節將更多解釋:https://github.com/spring-projects/spring-xd/wiki/Batch-Jobs#launching-a-job
因此,這項工作啓動(它接收作業啓動要求每次)只有在工作模塊部署的容器內,你可以期望原來的春天批量流量時工作被執行。 (參考外殼DOC對所有作業相關的命令)
我可以以某種方式控制以某項工作可以並行執行(使用不同的參數)和其他人可能不?
如果是針對不同的作業參數同樣的工作定義,那麼它會去哪裏工作模塊部署在同一個容器中。 但是,您仍然可以使用同一個批處理作業模塊創建新的作業定義。
xd>job create myotherdailyfeedjob --definition "myfeedjobmodule" --deploy
唯一的區別是它將在該命名空間下。並且,作業啓動隊列名稱將爲job:myotherdailyfeedjob
。這完全取決於你想如何組織運行你的批處理作業。
此外,並行處理批處理作業,你可以使用: http://docs.spring.io/spring-batch/reference/html/scalability.html
和,XD爲運行批處理作業單步分區支持:
包括此作業模塊:
<import resource="classpath:/META-INF/spring-xd/batch/singlestep-partition-support.xml"/>
定義了分區程序和tasklet bean。
您可以從這裏試用一些XD批次樣品: https://github.com/spring-projects/spring-xd-samples