2015-06-18 17 views
5

Tôi có một webjob trên Azure, với một QueueTrigger. Công việc này dài (Hơn 30 phút)Azure WebJob QueueTrigger Làm thế nào DeleteMessage sau khi nhận được nó?

public async static Task ProcessQueueMessageAsync([QueueTrigger(QUEUENAME)] string iJobId) 
{ 
//doing my long job 
} 

Vấn đề của tôi là cách xóa thư trong hàng đợi sau khi kích hoạt. Tin nhắn trở nên vô hình cho đến khi một khoảng thời gian (30s theo mặc định) đến. Ít hơn thời gian công việc của tôi. Vì vậy, tôi cho rằng tôi phải xóa thông báo ở đầu phương pháp kích hoạt. Tôi tìm cách thực hiện khi bạn lặp lại phương thức GetMessage() thay vì kích hoạt. Nhưng làm thế nào để làm điều đó với kích hoạt, bởi vì tôi không có đối tượng tin nhắn để chạy .DeleteMessage()?

Trả lời

3

Answered by Michael Curd on the MSDN Forums, và trích dẫn ở đây:

SDK đã phải xử lý đó. Như bạn đã nói, thông báo sẽ được cho thuê (hoặc trở thành vô hình) trong 30 giây theo mặc định. Nếu công việc mất nhiều thời gian hơn, thì hợp đồng thuê sẽ được gia hạn. Thông báo sẽ không có sẵn cho một thể hiện khác của hàm trừ khi máy chủ bị treo hoặc chức năng ném một ngoại lệ. Khi hàm hoàn tất thành công, thông báo sẽ bị xóa bởi SDK. Vì vậy, bạn không cần phải viết bất kỳ mã đặc biệt nào cho kịch bản này.

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