2017-02-09 49 views
2

我使用的服务总线与蔚蓝的功能。功能由一个队列触发,则对输入的BrokeredMessage的ReplyTo属性是被用作队列响应上。我如何动态绑定到输出队列?我试着下面的代码,但得到:如何动态绑定服务总线BrokeredMessage在Azure的功能

无法绑定ServiceBus键入 “Microsoft.ServiceBus.Messaging.BrokeredMessage”。

public static async Task Run(BrokeredMessage msg, Binder binder, TraceWriter log) 
{ 
    log.Info($"C# ServiceBus queue trigger function processed message"); 
    var msgout = await binder.BindAsync<BrokeredMessage>(new ServiceBusAttribute(msg.ReplyTo)); 
} 

function.json

{ 
    "disabled": false, 
    "bindings": [ 
    { 
     "name": "msg", 
     "type": "serviceBusTrigger", 
     "direction": "in", 
     "queueName": "myInputQueue", 
     "connection": "AzureWebJobsServiceBus", 
     "accessRights": "Manage" 
    } 
    ] 
} 

回答

3

对于输出情况下,您需要绑定键入IAsyncCollector

public static async Task Run(
    BrokeredMessage msg, Binder binder, TraceWriter log) 
{ 
    log.Info($"C# ServiceBus queue trigger function processed message"); 
    var collector = await binder.BindAsync<IAsyncCollector<BrokeredMessage>>(
         new ServiceBusAttribute(msg.ReplyTo)); 

    var message = ... 
    await collector.AddAsync(message); 
} 
+0

谢谢,正是我需要的。将是很好,如果它看起来像一个典型的场景回复上的ReplyTo属性指定的队列,这可能是被声明完成。 –

+0

同意。我们在回购[这里](https://github.com/Azure/azure-webjobs-sdk/issues/1004)扩大了一套建在EventHub触发数据绑定的属性有一个相关的问题。我们将为ServiceBus执行相同的操作。 – mathewc