2012-08-09 77 views
0

我試圖配置多線程步驟。我遵循了Spring批處理文檔。無法使用彈簧批量在多線程步驟執行中配置節流限制

我的工作配置:

<job id="ordinaryJob" xmlns="http://www.springframework.org/schema/batch" job-repository="jobRepository"> 
<step id="Ordinary" xmlns="http://www.springframework.org/schema/batch"> 
    <tasklet transaction-manager="transactionManager"> 
     <chunk **throttle-limit="10**" task-executor="asyncTaskExecutor" reader="itemReader"        writer="EmployeeWriter" commit-interval="1000" /> 
    </tasklet> 
    </step> 
</job> 

當我執行我m到處下面例外的工作。

Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 49 in XML document from class path resource [xmlJob.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'throttle-limit' is not allowed to appear in element 'batch:chunk'. 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:404) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at controller.XMLJobController.<init>(XMLJobController.java:42) 
    at controller.XMLJobController.main(XMLJobController.java:48) 
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'throttle-limit' is not allowed to appear in element 'batch:chunk'. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processAttributes(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396) 
    ... 15 more 

我能夠在沒有油門限制參數的情況下執行作業。我想知道爲什麼我無法添加。任務執行器中的併發限制屬性是什麼?

感謝, Sivaprakash

回答

1

如果調查Spring Batch xsd它說,throttle-limit是可以與tasklet型使用的屬性,而不是與chunk

你得到的SAXParseException說的一樣:油門限沒有預想中批:塊

org.xml.sax.SAXParseException:CVC-複雜type.3.2.2:屬性 '調節限制' 不是異體要在元素'batch:chunk'中出現。

同樣是與任務執行人真實屬性也屬於微進程,而不是塊

所以,正確的用法是

<tasklet transaction-manager="transactionManager" throttle-limit="10" task-executor="asyncTaskExecutor"> 
    <chunk reader="itemReader" writer="EmployeeWriter" commit-interval="1000" /> 
</tasklet> 
+0

嗨,我發現這個職位的https: //jira.springsource.org/browse/BATCH-1392他們說它是春季批次中的一個bug。請確認。 – user1587259 2012-08-13 05:59:57

+0

這個錯誤是在幾年前解決的。你爲什麼沒有試過我的解決方案? – 2012-08-13 19:44:03

+0

是的,我嘗試過。但它再次給我解析異常:( – user1587259 2012-08-21 06:59:41