2010-07-09 22 views
6

Tôi gặp sự cố khi triển khai máy khách/máy chủ của Quartz.NET.Quartz.NET, "Lỗi khi kết nối với bộ lập lịch từ xa".

Tôi có máy chủ SQL trên ServerA, máy chủ chạy Quartz là dịch vụ (ServerB) và máy chủ lưu trữ ứng dụng ASP.NET (ServerC).

Tôi đã làm theo tất cả các hướng dẫn và được đưa vào mã một số tiền hợp lý nhưng tôi không thể nhìn thấy những gì tôi đang làm sai. Máy chủ chắc chắn đang lắng nghe và tôi có thể thấy cổng đang mở từ ServerC. Không có tường lửa liên quan.

ServerB, mà đang chạy dịch vụ bao gồm trong gói tải về (Quartz.Server.Service) có các thiết lập tập tin cấu hình sau:

<quartz> 
    <add key="quartz.server.serviceName" value="quartz" /> 
    <add key="quartz.server.serviceDisplayName" value="Job Scheduler" /> 
    <add key="quartz.scheduler.instanceName" value="RemoteServer" /> 
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> 
    <add key="quartz.threadPool.threadCount" value="10" /> 
    <add key="quartz.threadPool.threadPriority" value="Normal" /> 
    <add key="quartz.scheduler.exporter.type" value="Quartz.Simpl.RemotingSchedulerExporter, Quartz" /> 
    <add key="quartz.scheduler.exporter.port" value="5656" /> 
    <add key="quartz.scheduler.exporter.bindName" value="QuartzScheduler" /> 
    <add key="quartz.scheduler.exporter.channelType" value="tcp" /> 
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" /> 
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" /> 
    <add key="quartz.jobStore.tablePrefix" value="qrtz_" /> 
    <add key="quartz.jobStore.dataSource" value="db" /> 
    <add key="quartz.dataSource.db.provider" value="SqlServer-20" /> 
    <add key="quartz.dataSource.db.connectionString" value="Data Source=ServerA;Initial Catalog=dev;User ID=dev;Password=dev" /> 
    <add key="quartz.jobStore.useProperties" value="true" /> 
    <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" /> 
</quartz> 

Ứng dụng ASP.NET có cấu hình sau:

<quartz> 
    <add key="quartz.scheduler.instanceName" value="RemoteClient" /> 
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> 
    <add key="quartz.threadPool.threadCount" value="5" /> 
    <add key="quartz.threadPool.threadPriority" value="Normal" /> 
    <add key="quartz.scheduler.proxy" value="true" /> 
    <add key="quartz.scheduler.proxy.address" value="tcp://ServerB:5656/QuartzScheduler" /> 
</quartz> 

Tôi đã thử nhiều thứ. Thỉnh thoảng tôi gặp lỗi khi người lên lịch đã tồn tại thay vì người lập lịch trong tiêu đề câu hỏi.

Tôi đã đọc ở đâu đó rằng do các vấn đề luồng tôi nên tạo scheduler trong một singleton, mà tôi đã thực hiện:

private static readonly ISchedulerFactory _schedulerFactory; 
    private static readonly IScheduler _scheduler; 

    static JobScheduleService() { 
     _schedulerFactory = new StdSchedulerFactory(); 
     _scheduler = _schedulerFactory.GetScheduler(); 
    } 

    public static IScheduler GetScheduler() { 
     return _scheduler; 
    } 

Tôi đã bỏ lỡ gì? TIA


Nếu tôi mở hộp telnet trên máy chủ web và kết nối với máy chủ thạch anh thì dịch vụ chắc chắn sẽ phản hồi. Nếu tôi gõ một vài ký tự tôi nhận được một lỗi từ Quartz.

Điều này có hữu ích không? I E. nó không phải là một vấn đề kết nối?

Telnet http://www.freeimagehosting.net/uploads/3bd8cd3f53.png

+0

Tệp dll có bị thiếu trên dịch vụ thạch anh hoặc trên ứng dụng từ nơi bạn kết nối từ xa không? Bạn có nhớ chia sẻ tên dll? Tôi gặp vấn đề tương tự khi kết nối từ xa với máy chủ thạch anh. – user2748614

+0

Nó đã được trên máy chủ, nhưng tôi không nhớ đó dll nó được - nó sẽ có được Quartz.Core.dll, Quartz.Service.dll, hoặc lắp ráp trong đó tôi đã thực hiện các giao diện IJob của tôi. – enashnash

Trả lời

1

Nó chỉ ra rằng thông báo lỗi chỉ là một chút gây hiểu lầm. Lỗi này không có trong giao tiếp với máy chủ. Vấn đề là một tệp DLL bị thiếu mà không được sao chép như một phần của triển khai. Lỗi cơ bản là do lịch trình không thể tìm thấy DLL.

+0

Để thêm vào điều này, tôi đã tìm thấy lỗi này cũng xảy ra khi cố gắng thêm một công việc tham chiếu đến một lớp không được tìm thấy bởi máy chủ quartz.net. – EBarr

+0

Bạn có muốn biết nó là gì không. Tôi đang gặp vấn đề này ngay bây giờ. – gooddadmike

+0

Đó là DLL nơi tôi đã tạo ra các triển khai IJob, không phải bất cứ điều gì để làm với các DLL Quartz mình. – enashnash

2

cố gắng không thiết lập bất kỳ thuộc tính quartz.threadpool.xxxxxx.

+0

Tôi nhận xét chúng trên máy chủ thạch anh và khởi động lại dịch vụ, sau đó trên máy chủ web. Tôi vẫn gặp lỗi tương tự. – enashnash

+0

Tôi nên cụ thể hơn ... chỉ nhận xét chúng ở phía khách hàng. Nó có thể không giúp đỡ, nhưng đây là sự khác biệt duy nhất tôi thấy trong những gì chúng tôi đang làm và những gì bạn đang làm. – jvilalta

+0

Lỗi tương tự tôi sợ. Bất cứ một đề nghị nào khác? – enashnash

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