2015-02-11 14 views
5

Tôi có yêu cầu tạo một trình lên lịch nhiệm vụ với 10 chuỗi mà chúng ta cần kích hoạt cùng một lúc và mỗi chuỗi sẽ trở lại trạng thái hoàn thành hoặc không thành công. Dựa trên kết quả của chuỗi, chúng ta sẽ thực hiện cuộc gọi db và tìm nạp dữ liệu từ db. Ứng dụng đã được cấu hình với Spring Framework. Tôi hiểu rằng mùa xuân cung cấp lịch trình công việc, nhưng không chắc chắn làm thế nào để sử dụng nó, mùa xuân newbie cần giúp đỡ. Làm thế nào về ScheduledExecutorService của java, chúng ta có thể sử dụng nó? Lợi thế nào chúng ta sẽ vượt qua cái kia? Có một lựa chọn tốt hơn để lập lịch nhiệm vụ mùa xuân và ScheduledExecutorService của Java không?Lập lịch tác vụ mùa xuân so với ScheduledExecutorService của Java

Trả lời

1

Mùa xuân TaskExecutor thực sự giống hệt với giao diện java Executor. Sau mùa xuân 2.0 TaskExecutor đã được giới thiệu để thêm trừu tượng vào Java Executor, để nó sẽ ẩn chi tiết triển khai giữa các phiên bản khác nhau của Java SE và môi trường EE.

Như bạn đã có môi trường mùa xuân, tôi khuyên bạn nên sử dụng mùa xuân schedulers. Sau đó, nếu bạn cần bạn có thể cung cấp cho các thành phần Spring khác một sự trừu tượng cho việc tạo nhóm luồng, v.v.

Ngoài ra còn có một số triển khai TaskExecutor được tạo sẵn, vì bạn không phải quan tâm đến chi tiết và thực hiện của riêng bạn.

1

Cách đơn giản nhất là sử dụng thẻ tác vụ được cung cấp trong cấu hình mùa xuân. Thông báo các 'nhiệm vụ' namespace dưới

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:ctx="http://www.springframework.org/schema/context" 
     xmlns:task="http://www.springframework.org/schema/task" 
     xmlns:util="http://www.springframework.org/schema/util" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd 
"> 

một khi bạn đã làm điều đó bạn có thể sử dụng

<task:scheduler id="taskScheduler" pool-size="4"/> 
<task:scheduled-tasks scheduler="taskScheduler"> 
    <task:scheduled ref="someBean" method="someMethod" fixed-rate="21600000" initial-delay="60000"/> 
</task:scheduled-tasks> 

, vv nhiệm vụ theo lịch trình thực tế của bạn là một bean với một phương pháp trên đó mà được gọi là. Bạn có thể sắp xếp nó vào một sự chậm trễ cố định hoặc trên một cron, vv

bạn cũng có thể tuyên bố Chấp hành viên trong cấu hình như thế này:

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> 
     <description>A task pool for general use</description> 
     <property name="corePoolSize" value="150" /> 
     <property name="maxPoolSize" value="200" /> 
     <property name="queueCapacity" value="10" /> 
     <property name="keepAliveSeconds" value="0"/> 
     <property name="waitForTasksToCompleteOnShutdown" value="false"/> 
    </bean> 

Bạn có thể sử dụng một chấp hành viên để thực hiện một vũng nhiệm vụ đồng thời (tiêm rằng đậu vào đậu của bạn và nhìn vào những gì nó cung cấp).

Các vấn đề liên quan