2014-10-28 16 views
8

Sử dụng Azure WebJobs SDK, tôi muốn tạo một hàm async sẽ nhận đầu vào hàng đợi ServiceBus và ghi vào đầu ra hàng đợi ServiceBus. Các phương thức không đồng bộ không thể có các tham số, cho các ví dụ trên BlobStorage, dường như được làm việc xung quanh bằng cách có các Stream và TextWriters thay thế. Tuy nhiên, khi tôi cố gắng làm như vậy với một tham số ServiceBus tôi nhận được một ngoại lệ.Làm cách nào để có chức năng Async ghi vào hàng đợi của dịch vụ?

public static async void Transform(
    [ServiceBusTrigger("%InputQueue%")] String input, 
    [ServiceBus("%OutputQueue%")] TextWriter output, 
    TextWriter log) 

Lỗi phương pháp lập chỉ mục

Không thể ràng buộc ServiceBus 'FilterCurrentCpesToNewCpes' gõ 'System.IO.TextWriter'.

Tôi nhận được một thông báo tương tự cho Luồng.

Trả lời

12

Vì chức năng Async không thể có tham số, bạn có thể liên kết với ICollector<T> hoặc IAsyncCollector<T> và thực hiện thao tác Thêm() để gửi tin nhắn. ICollector được định nghĩa trong SDK WebJobs.

Mẫu sau đây minh họa điều này.

public static async void Transform(
[ServiceBusTrigger("%InputQueue%")] string input, 
[ServiceBus("%OutputQueue%")] IAsyncCollector<string> output, 
TextWriter log) 
    {    
     await output.AddAsync(input); 
    } 
Các vấn đề liên quan