从自定义IJobActivator中获取BrokeredMessage

时间:2015-07-14 15:26:28

标签: azure-webjobssdk

是否可以从IJobActivator中的服务总线触发器获取Web作业中的基础BrokeredMessage?这在多租户场景中非常有用。

我使用Unity自定义IJobActivator来实例化我的工作。在我的UnityJobActivator类中,我希望能够查看底层的BrokeredMessage并从中提取一些自定义属性,例如" Tenant",我的所有消息都有。这将允许我在执行之前将适当的数据库连接或配置对象注入我的作业类。

下面是一个示例,我想将ITenantConfiguration注入作业,但它是基于BrokeredMessage自定义属性。如果我可以从UnityJobActivator中访问BrokeredMessage,我可以这样做。

public class CustomJob
{
    private const string Subscription = "subscription";
    private const string Topic = "topic";

    private ITenantConfiguration config;

    public CustomJob(ITenantConfiguration config)
    {
        // This configuration depends on the Tenant property of the BrokeredMessage
        this.config = config;
    }

    public void Handle([ServiceBusTrigger(Topic, Subscription)] MyMessage myMessage)
    {
        // Do something with myMessage and the appropriate configuration
    } 
}

1 个答案:

答案 0 :(得分:0)

是的,绑定到BrokeredMessage而不是MyMessage:

public void Handle([ServiceBusTrigger(Topic, Subscription)] BrokeredMessage myMessage)
{ ... }