2012-07-22 27 views
6

Tôi đang cố gắng phát triển một dịch vụ WCF chăm sóc hàng trăm lượt tải xuống và chuyển đổi cùng nhau. Tôi đã được khởi tạo MSMQ với một hàng đợi giao dịch nhận tin nhắn từ một ứng dụng web ASP.NET.WCF & MSMQ & TransactionScope quá trình dài

Câu hỏi của tôi sau một nghiên cứu dài trên Internet là cách quản lý quá trình lâu dài trong phương thức dịch vụ WCF quản lý thông báo MSMQ.

Vấn đề là khi tải xuống với kích thước nhỏ, quá trình kết thúc sớm và phạm vi hoàn thành trở lại dịch vụ MSMQ, nhưng nếu kích thước tải xuống lớn và cần phải tải xuống 3/4 phút, so với phạm vi vẫn trả về hoàn thành, nhưng dịch vụ MSMQ gửi lại MSG cho dịch vụ WCF và tôi đã tải xuống bản sao.

Tôi đoán đây là sự cố về thời gian chờ, nhưng tôi đã cố gắng định cấu hình ứng dụng Máy chủ lưu trữ của mình tốt hơn mà không thành công.

 <netMsmqBinding> 
    <binding name="OrderServiceMsmqBinding" 
      maxRetryCycles="1" 
      receiveRetryCount="1" 
      retryCycleDelay="00:05:20" 
      deadLetterQueue="System" 
      receiveErrorHandling="Move" 
      exactlyOnce="true" 
      durable="true" 
      receiveTimeout="00:10:00" 
      sendTimeout="00:20:00" 
      timeToLive="1.00:00:00" useMsmqTracing="true"> 
     <security mode="None"></security> 
    </binding> 
    </netMsmqBinding> 

và đây là phương pháp vào dịch vụ WCF:

<OperationBehavior(TransactionScopeRequired:=True, TransactionAutoComplete:=True)> _ 
Public Sub FfmpegConversion(ffmpegjob As FfmpegJob) Implements IOrderService.FfmpegConversion 
    Using sc As New TransactionScope(TransactionScopeOption.Required) 
     Try 
      ExecuteLongProcess() 
     Catch ex As Exception 
      Console.WriteLine(ex.Message) 
     Finally 
      sc.Complete() 
     End Try 
    End Using 
End Sub 

CẬP NHẬT

Sau khi thử nghiệm dài và nghiên cứu, tôi bắt đầu nghĩ rằng là không thể làm cho quá trình dài vào phương pháp được kích hoạt bởi quaiue MSMQ.

Tôi giải quyết vấn đề bằng cách sử dụng một luồng khác để quản lý dữ liệu, nhưng bây giờ vấn đề là tôi mất giao dịch TransactionScope vì sau khi công việc chuyển đến chủ đề mới, MSMQ xóa tin nhắn như đã tin.

+1

bạn đã thử làm 'receiveRetryCount = 0'? –

Trả lời

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