2015-02-02 17 views
5

Xử lý thông điệp độc hại hoạt động như thế nào cho ServiceBusTrigger của Azure WebJobs SDK? Tôi đang tìm cách đẩy các tin nhắn xếp hàng xe buýt dịch vụ đã được giải phóng nhiều hơn 'x' lần vào một hàng đợi khác của ServiceBus (hoặc) Lưu trữAzure WebJobs và ServiceBusTrigger

Tài liệu trực tuyến herehere và mẫu SDK từ here không có ví dụ về cách xử lý tin nhắn độc hoạt động cho ServiceBusTrigger. Công việc này có đang diễn ra không?

tôi đã cố gắng thực hiện một thông báo tùy chỉnh độc xử lý sử dụng dequeueCount tham số nhưng nó không nhìn thấy nó được hỗ trợ cho ServiceBusTriggers như tôi đã nhận được một ngoại lệ thời gian chạy {"Cannot bind parameter 'dequeueCount' when using this trigger."}

public static void ProcessMessage([ServiceBusTrigger(topicName: "abc", subscriptionName: "abc.gdp")] NotificationMessage message, 
      [Blob("rox/{PayloadId}", FileAccess.Read)] Stream blobInput, Int32 dequeueCount) 
     { 
      throw new ArgumentNullException(); 
     } 

Trả lời

6

Trong khi bạn không thể có được dequeueCount tài sản cho các tin nhắn ServiceBus, bạn luôn có thể liên kết với BrokeredMessage thay vì NotificationMessage và nhận tài sản từ nó.

6

Dường như WebJobs xử lý này trong nội tại khoảnh khắc.

tham khảo: How to use Azure Service Bus with the WebJobs SDK

phần cụ thể:

Làm thế nào ServicebusTrigger làm việc

SDK nhận thư ở chế độ PeekLock và kêu gọi Toàn bộ vào thông điệp nếu chức năng kết thúc thành công, hoặc gọi Abandon nếu chức năng không thành công. Nếu chức năng chạy lâu hơn thời gian chờ của PeekLock, khóa sẽ tự động được gia hạn.

Serice Bus thực hiện xử lý hàng đợi độc của riêng nó, do đó không phải là được kiểm soát bởi cũng như không thể định cấu hình trong SDK WebJobs.

+0

Tôi thấy ServiceBusTrigger là ... hấp dẫn. Nếu tôi kiểm tra trạng thái cho lời gọi hàm trong trang tổng quan "WebJobs", nó nói trạng thái "Thành công" với thời gian chạy bằng mili giây cho lời gọi chưa hoàn thành. Đó là một quá trình chạy dài (> 10 phút), nhưng trạng thái là "Thành công" ngay lập tức. ServiceBusTrigger có trả về thành công ngay lập tức và sau đó xử lý tin nhắn không? – Anton

0

Để thêm vào câu trả lời của Brendan Green, WebJobs SDK gọi Abandon trên các thư không xử lý được, và sau khi số lần thử lại tối đa, các thư này được chuyển đến hàng đợi thư chết bởi Service Bus. Các thuộc tính xác định khi nào một thông báo sẽ được chuyển vào hàng đợi chữ cái chết, chẳng hạn như số lượng phân phối tối đa, thời gian sống, và thời gian PeekLock có thể được thay đổi trong Service Bus -> Queue -> Properties.

Bạn có thể tìm thêm thông tin về hàng đợi thư SB chết tại đây: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dead-letter-queues

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