我使用Service Bus Explorer作为测试通过ARM部署时不起作用的规则的快速方法。
在Azure函数的JavaScript中,我将主题消息设置为:
context.bindings.outputSbMsg = { Indicator: 'Itinerary'};
在Service Bus Explorer中,我使用以下字符串在订阅上设置规则:
Indicator = 'Itinerary'
但是发送到主题的消息不会进入该订阅(它们以规则1 = 1转到另一个订阅)
问题:我在这里想念什么?
补充信息:
我似乎无权访问Indicator属性。作为测试,我对附加到指标属性的1 = 1规则创建了一个操作,结果为空。
如果我具有由1 = 1规则触发的Function,那么我就可以访问JavaScript中的Indicator属性,
答案 0 :(得分:1)
该规则不起作用,因为
context.bindings.outputSbMsg = { Indicator: 'Itinerary'};
发送一条消息{ Indicator: 'Itinerary'}
,而我们没有设置任何属性。并且具有1 = 1 true过滤器的默认规则使所有消息都可以选择到订阅中,因此您可以看到消息一直都在那儿。检查doc of topic filters了解更多详细信息。
目前,js函数输出无法填充消息属性是by design。为了使过滤器正常工作,我们必须使用SDK发送具有属性的消息。安装azure-sb
软件包,然后尝试下面的示例代码。
const azuresb = require("azure-sb");
const connStr = "ServiceBusConnectionString";
const mytopic = "mytopic";
var serviceBus = azuresb.createServiceBusService(connStr);
const msg =
{
body: "Testing",
customProperties: {
Indicator: 'Itinerary'
}
};
serviceBus.sendTopicMessage(mytopic, msg, function(error) {
if (error) {
context.log(error);
}
else{
context.log("Message Sent");
}
});