是否可以通过 IJobActivator 内的服务总线触发器获取 Web 作业中的底层 BrokeredMessage?这在多租户场景中非常有用。
我正在使用带有 Unity 的自定义 IJobActivator 来实例化我的作业。在我的 UnityJobActivator 类中,我希望能够查看底层 BrokeredMessage 并从中提取一些自定义属性,例如我的所有消息都具有的“租户”。这将允许我在执行之前将适当的数据库连接或配置对象注入到我的作业类中。
下面是一个示例,我想将 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
}
}