我正在尝试使用 Quartz.NETReliableDbProvider , 以允许 Quartz 连接到我们的 Azure SQL 数据库而无需 transient connection issues .
这是我正在使用的配置(重新格式化以提高可读性;我实际上在 NameValueCollection 中初始化它们...):

quartz.jobStore.dirverDelegateType:                Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz 
quartz.jobStore.tablePrefix:                       QRTZ_ 
quartz.dataSource.default.connectionString:        Data Source=(localdb)\\mssqllocaldb;Initial Catalog=Foo;Integrated Security=True 
quartz.dataSource.default.connectionProvider.type: ReliableDbProvider.SqlAzure.SqlAzureProvider 
quartz.jobStore.useProperties:                     true 
尝试创建调度程序时,出现异常

InvalidCastException: Unable to cast object of type ReliableDbProvider.SqlAzure.SqlAzureProvider to type Quartz.Impl.AdoJobStore.Common.IDbProvider.


我想这并不奇怪——但我该如何解决呢?我看了一下 IDbProvider来自 Quartz 的接口(interface),但如何将其转发到 ReliableDbProvider 的实例并不简单。 ,因为后者没有实现前者的所有功能。
使用 Quartz 不知道的自定义连接提供程序的最佳方式是什么?

请您参考如下方法:

这是一个 QUART.NET IDbProvider....

Quartz.Impl.AdoJobStore.Common.IDbProvider

不仅仅是一些/任何标准的微软。

(你有点提到,但与此同时,它看起来并没有真正点击到这意味着什么)

有人(在互联网领域......或者你)必须编写一个支持 Azure 的混凝土。据我所知,它还没有完成。

这是列表:

https://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/job-stores.html

Currently following database providers are supported: 
SqlServer-20 - SQL Server driver for .NET Framework 2.0 
OracleODP-20 - Oracle’s Oracle Driver 
OracleODPManaged-1123-40 Oracle’s managed driver for Oracle 11 
OracleODPManaged-1211-40 Oracle’s managed driver for Oracle 12 
MySql-50 - MySQL Connector/.NET v. 5.0 (.NET 2.0) 
MySql-51 - MySQL Connector/:NET v. 5.1 (.NET 2.0) 
MySql-65 - MySQL Connector/:NET v. 6.5 (.NET 2.0) 
SQLite-10 - SQLite ADO.NET 2.0 Provider v. 1.0.56 (.NET 2.0) 
Firebird-201 - Firebird ADO.NET 2.0 Provider v. 2.0.1 (.NET 2.0) 
Firebird-210 - Firebird ADO.NET 2.0 Provider v. 2.1.0 (.NET 2.0) 
Npgsql-20 - PostgreSQL Npgsql 

附加

唔。我发现了一些有趣的东西。

在 Quartz.Net 源代码中,在这个文件中:

\src\Quartz\Impl\AdoJobStore\Common\dbproviders.properties

或其他地方可以看到它

https://github.com/quartznet/quartznet/blob/master/src/Quartz/Impl/AdoJobStore/Common/dbproviders.properties
Database provider configuration data 
Core information taken from Spring Framework .NET - All credits to their great work! 

..
# SQL SERVER 
quartz.dbprovider.SqlServer-20.productName=Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0 
quartz.dbprovider.SqlServer-20.assemblyName=System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
quartz.dbprovider.SqlServer-20.connectionType=System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
quartz.dbprovider.SqlServer-20.commandType=System.Data.SqlClient.SqlCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
quartz.dbprovider.SqlServer-20.parameterType=System.Data.SqlClient.SqlParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
quartz.dbprovider.SqlServer-20.commandBuilderType=System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
quartz.dbprovider.SqlServer-20.parameterDbType=System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
quartz.dbprovider.SqlServer-20.parameterDbTypePropertyName=SqlDbType 
quartz.dbprovider.SqlServer-20.parameterNamePrefix=@ 
quartz.dbprovider.SqlServer-20.exceptionType=System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
quartz.dbprovider.SqlServer-20.useParameterNamePrefixInParameterCollection=true 
quartz.dbprovider.SqlServer-20.bindByName=true 
quartz.dbprovider.SqlServer-20.dbBinaryTypeName=Image 

因此,可以尝试对 Azure 项目进行上述映射。不知道你可能有多接近。

我期待看到类似的东西

公共(public)类 SqlServer20:Quartz.Impl.AdoJobStore.Common.IDbProvider

但这让我找到了“dbproviders.properties”文件。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!