Schedule2.0.1 demo应用教程(三)

创建schedule文件

 

该文件配置任务处理的bean,调度服务器配置bean以及事务配置bean

 

<beans default-autowire="byName">
	<!--   任务处理类        -->
	<bean id="taskSingle" class="schedule.TaskSingle" init-method="init" lazy-init="false"
		depends-on="tbScheduleManagerFactory">
		<property name="dataSource">
			<ref bean="schedule_source" />
		</property>
		<property name="taskType" value="PamirsScheduleTest"></property>
		<property name="ownSign" value="BASE"></property>
	</bean>

	<!--   调度服务器配置        -->
	<bean id="scheduleConfigCenter"
		class="com.taobao.pamirs.schedule.ScheduleConfigCenterClientByDatabase">
		<property name="dataSource">
			<ref bean="schedule_source" />
		</property>
		<property name="tableMap">
			<map>
				<entry key="pamirs_schedule_queue">
					<value>PAMIRS_SCHEDULE_QUEUE</value>
				</entry>
				<entry key="pamirs_schedule_server">
					<value>PAMIRS_SCHEDULE_SERVER</value>
				</entry>
				<entry key="pamirs_schedule_tasktype">
					<value>PAMIRS_SCHEDULE_TASKTYPE</value>
				</entry>
			</map>
		</property>
	</bean>
	
	<bean id="tbScheduleManagerFactory" class="com.taobao.pamirs.schedule.TBScheduleManagerFactory"
		init-method="init" lazy-init="false">
		<property name="scheduleConfigCenter">
			<ref bean="scheduleConfigCenter" />
		</property>
	</bean>
</beans>

 

到这里schedule demo的配置基本已完成,最后需要统一配置文件将上述文件包含进来,对了就是spring.xml

(注:这里我们的任务bean idtaskSingle,这对应着我们数据库schedulepamirs_schedule_tasktype字段DEAL_BEAN_NAME

 

 

JUNIT单元测试运行任务

 

在部署应用前我们先进行junit单元测试,观察schedule执行任务的处理情况,我们在src/test/java原目录下创建PamirsScheduleTest.java

 

@ContextConfiguration(locations = { "classpath:spring.xml" })
public class PamirsScheduleTest extends AbstractJUnit4SpringContextTests {

	@Test
	public void testRunData() throws Exception {
		int threadNum = 0;
		for (int i = 0; i < threadNum; i++) {
			TBScheduleManagerFactory.createTBScheduleManager(
					"PamirsScheduleTest", "BASE");
		}
		Thread.sleep(10000000);
	}

}
 

 

 

执行JUNIT测试,控制台打印如下信息,可知schedule已在正常处理任务了。

 

 

 

运行应用程序

 

将应用程序发布到 Tomcat或者Jetty容器(80端口),再通过 http://localhost:5168 访问。

如果一切正常,我们将页面拉至最下可得到如下页面信息:


 

这也就是应用暴露的scheduleJMX入口了,我们可以实时控制调度服务的创建和停止。

 

到此最基础的schedule应用就已经完成了,如果多台机器部署了该应用,我们可以在数据观察schedule表的一些动态信息,感受schedule分布式处理任务的功能,这里主要讲述schedule应用实例,其他内容这里就不赘述了。

 

 

配置WEB SERVICE功能服务

web service概念

 

Web服务是一种面向服务的架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。

 

为什么要让schedule提供web服务

 

schedule为多主机提供共同处理任务的能力,由于其应用承载着巨大的数据处理责任,我们有必要监控schedule的运行状态,实时跟踪运行的任务是否存在异常状况。Schedule2.0已经支持WEB服务,并专门提供了服务调用接口。下图为初步的监控设计。

 


 

 

下面简单接着上面的demo讲解如何把应用的schedule web服务接口暴露出来

 

web.xml增加CXF配置:

 

        <!-- Apache CXFServlet -->
	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- CXFServlet Mapping -->
	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>

 

 增加schedule-ws-server.xml文件

 

<?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:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
		http://cxf.apache.org/jaxws 
			http://cxf.apache.org/schemas/jaxws.xsd">
	<!-- Import Apache CXF Bean Definition -->
	<import resource="classpath:META-INF/cxf/cxf.xml"/>
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
	<!-- Expose WebService -->
	<jaxws:server id="scheduleWebService"
		serviceClass="com.taobao.pamirs.schedule.IScheduleClient"
		address="/ScheduleWebService">
		<jaxws:serviceBean>
			<ref bean="scheduleConfigCenter" /> <!-- 要暴露的 bean 的引用 -->
		</jaxws:serviceBean>
	</jaxws:server>
</beans>
 

 

最后在spring.xml文件中将该文件引入即可。

 

<beans default-autowire="byName">
	<import resource="db4MySql.xml" />
	<import resource="mbean-config.xml" />
	<import resource="schedule-ws-server.xml" />
	<import resource="schedule.xml" />
</beans>
 

 

 

配置完成后我们运行应用,通过 http://localhost /ScheduleWebService?wsdl 访问。

如果一切正常,我们将看到xml形式暴露出来的schedule接口信息。

 

如果监控的web应用开启,那么监控页面上会出现我们部署schedule demo应用服务器的调度信息,如下图:

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值