当前位置: 首页 > news >正文

在百度上怎么建网站软件开发过程文档

在百度上怎么建网站,软件开发过程文档,网站设计动画,天河网站建设系统一般拿 Timer 和 Quartz 相比较的#xff0c;简直就是对 Quartz 的侮辱#xff0c;两者的功能根本就不在一个层级上#xff0c;如本篇介绍的Quartz强大的集群机制#xff0c;可以采用基于sqlserver#xff0c;mysql的集群方案#xff0c;当然还可以在第三方插件的基础上实… 一般拿 Timer 和 Quartz 相比较的简直就是对 Quartz 的侮辱两者的功能根本就不在一个层级上如本篇介绍的Quartz强大的集群机制可以采用基于sqlservermysql的集群方案当然还可以在第三方插件的基础上实现quartz序列化到nosql的mongodbredis震撼力可想而知接下来本篇就和大家聊一聊怎么搭建基于sqlserver的quartz集群实现这么一种双机热备的集群功能。一下载sqlserver版的建表脚本首先在 github 上搜索quartz的源代码在源码项目的/database/tables目录下可以找到firebirdoraclemysqlsqlserver等建库脚本本篇演示sqlserver版本的建表脚本。https://github.com/quartznet/quartznet/tree/master/database/tables 如下图所示从上面的截图中可以看到我接下来要做的事情就是增加一个你需要创建的database名字这里取为【quartz】改后如下二配置quartz的集群参数当我们写 var scheduler StdSchedulerFactory.GetDefaultScheduler() 这段代码的时候如果大家看过源码的话会知道这个GetScheduler的过程中有一个初始化方法Instantiate此方法中你会发现在做 DBProvider 的时候会需要几个参数来初始化DB的比如下面看到的几个标红代码。IListstring dsNames cfg.GetPropertyGroups(PropertyDataSourcePrefix);foreach (string dataSourceName in dsNames){string datasourceKey {0}.{1}.FormatInvariant(PropertyDataSourcePrefix, dataSourceName);NameValueCollection propertyGroup cfg.GetPropertyGroup(datasourceKey, true);Type cpType loadHelper.LoadType(pp.GetStringProperty(PropertyDbProviderType, null));// custom connectionProvider...if (cpType ! null){// remove the type name, so it isnt attempted to be setpp.UnderlyingProperties.Remove(PropertyDbProviderType);ObjectUtils.SetObjectProperties(cp, pp.UnderlyingProperties);cp.Initialize();dbMgr DBConnectionManager.Instance;dbMgr.AddConnectionProvider(dataSourceName, cp);}else{string dsProvider pp.GetStringProperty(PropertyDataSourceProvider, null);string dsConnectionString pp.GetStringProperty(PropertyDataSourceConnectionString, null);string dsConnectionStringName pp.GetStringProperty(PropertyDataSourceConnectionStringName, null);if (dsConnectionString null !String.IsNullOrEmpty(dsConnectionStringName)){ConnectionStringSettings connectionStringSettings ConfigurationManager.ConnectionStrings[dsConnectionStringName];dsConnectionString connectionStringSettings.ConnectionString;}try{DbProvider dbp new DbProvider(dsProvider, dsConnectionString);dbp.Initialize();dbMgr DBConnectionManager.Instance;dbMgr.AddConnectionProvider(dataSourceName, dbp);}catch (Exception exception){initException new SchedulerException(Could not Initialize DataSource: {0}.FormatInvariant(dataSourceName), exception);throw initException;}}} 接下来的问题就是这几个属性是如何配置进去的仔细观察上面代码你会发现所有的配置的源头都来自于cfg变量ok接下来继续翻看代码相信你会看到有一个Initialize方法就是做cfg变量的初始化如下代码所示 public void Initialize(){NameValueCollection props (NameValueCollection) ConfigurationManager.GetSection(ConfigurationSectionName);string requestedFile QuartzEnvironment.GetEnvironmentVariable(PropertiesFile);string propFileName requestedFile ! null requestedFile.Trim().Length 0 ? requestedFile : ~/quartz.config;// check for specialstry{propFileName FileUtil.ResolveFile(propFileName);}catch (SecurityException){log.WarnFormat(Unable to resolve file path {0} due to security exception, probably running under medium trust);propFileName quartz.config;}Initialize(OverrideWithSysProps(props));} 仔细阅读上面的一串代码你会发现默认quartz参数配置来源于三个地方。app.config中的p节点。bin目录下的~/quartz.config文件。默认配置的NameValueCollection字典集合也就是上一篇博客给大家做的一个演示。我个人不怎么喜欢通过 quartz.config 文件进行配置这样也容易写死所以我还是喜欢使用最简单的 NameValueCollection 配置因为它的数据源可来源于第三方存储结构中配置代码如下//1.首先创建一个作业调度池var properties new NameValueCollection();//存储类型properties[quartz.jobStore.type] Quartz.Impl.AdoJobStore.JobStoreTX, Quartz;//驱动类型properties[quartz.jobStore.driverDelegateType] Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz; //数据源名称properties[quartz.jobStore.dataSource] myDS;//连接字符串properties[quartz.dataSource.myDS.connectionString] server.;Initial Catalogquartz;Integrated SecurityTrue;//sqlserver版本properties[quartz.dataSource.myDS.provider] SqlServer-20;//是否集群properties[quartz.jobStore.clustered] true;properties[quartz.scheduler.instanceId] AUTO; 上面的代码配置我都加过详细的注释大家应该都能看得懂而且这些配置就是这么定死的没什么修改的空间大家记住即可。三Job和Trigger定义在集群中环境下job和trigger的定义该怎么写的大家也不要想的太复杂注意一点就可以了在Schedule一个Job时候通过CheckExists判断一下这个Job在Scheduler中是否已经存在了如果存在你就不能再次通过Schedule去重复调度一个Job就可以了。。。所以判断的代码也很简单如下所示IScheduler scheduler factory.GetScheduler();scheduler.Start();var jobKey JobKey.Create(myjob, group);if (scheduler.CheckExists(jobKey)){Console.WriteLine(当前job已经存在无需调度:{0}, jobKey.ToString());}else{IJobDetail job JobBuilder.CreateHelloJob().WithDescription(使用quartz进行持久化存储).StoreDurably().RequestRecovery().WithIdentity(jobKey).UsingJobData(count, 1).Build();ITrigger trigger TriggerBuilder.Create().WithSimpleSchedule(x x.WithIntervalInSeconds(2).RepeatForever()).Build();scheduler.ScheduleJob(job, trigger);Console.WriteLine(调度进行中);} 上面这段代码大家就可以部署在多台机器中了是不是很简单四强大的cluster完整演示所有的初始化工作都做完了接下来我们copy一份bin文件同时打开两个console程序如下所示可以看到job任务只会被一个console调度另外一个在空等待。然后你肯定很好奇的跑到sqlserver中去看看是否已经有job和trigger的db存储很开心吧数据都有的。。。好了一切都是那么完美接下来可以展示一下quartz集群下的高可用啦如果某一个console挂了那么另一台console会把这个任务给接过来实现强大的高可用。。。所以我要做的事情就是把console1关掉再看看console2是不是可以开始调度job了完美这个就是本篇给大家介绍的Quartz的Cluster集群一台挂另一台顶住双机热备当然这些console你可以部署在多台机器中要做的就是保持各个server的时间同步因为quarz是依赖于本机server的时间好了本篇就先说到这里吧。
http://www.pierceye.com/news/147910/

相关文章:

  • 手机端网站开发视频教程怎么制作爆米花教程
  • 温岭做网站公司开发一个企业官网多少钱
  • 宿迁明远建设有限公司网站赣州58同城网招聘找工作
  • 网站未续费到期后打开会怎样wordpress 顶部栏 悬浮
  • 内部优惠券网站怎么做大连网站制作建设
  • 经营虚拟网站策划书福建设备公司网站
  • 网站建设费用明细报价wordpress暗箱
  • 南宁网站建公司电话福州建站服务
  • 有没有什么推荐的网站用 php网站建设打出一首古诗
  • 品牌网站建设浩森宇特wordpress 首页 缩略图
  • 一个主机可以做几个网站域名织梦cms网站更新
  • 知名网站有哪些网站开发是什么环境
  • 哪些网站是用wordpress开发一款视频app多少钱
  • 济南网站定制制作建设项目 环评申报网站
  • 无锡响应式网站设计wordpress站群管理系统
  • 主题网站策划设计书网络营销是什么的一项活动
  • python+网站开发实例教程免费做视频网站
  • 免费建站自己的网址美化网站公司
  • 做购物网站哪个cms好用网络规划与设计就业前景
  • wordpress仿站工具网站建设jw100
  • 网站推广过程叙述关键词歌词
  • vip影视网站如何做appwordpress centos查看目录
  • 网站怎么套模板山西seo博客
  • 好看的手机网站推荐新建的网站 找不到
  • 网站站内搜索怎么做seo搜索优化
  • 建设部网站 测绘规章pc网站手机网站
  • 建网站如何赚钱vs哪个版本做网站好
  • 新衡阳网站游戏软件开发公司简介
  • 湖南基础建设投资集团网站做体育最好的网站
  • 上海php网站开发公司wordpress 邮件认证