从Dynamics 365发往Azure Service Bus的消息过滤方案问询
解决Dynamics 365到Azure Service Bus的消息过滤问题
一、消息头中是否存在操作类型标识?
是的,Dynamics 365通过插件注册工具配置的服务端点发送到Azure Service Bus的消息,会在消息头的自定义应用属性中携带操作类型标识:
- 系统默认添加
Microsoft.Dynamics.CRM.OperationType属性,值对应Dynamics的操作枚举:0= 创建(Create)1= 更新(Update)- 其他值对应删除、关联等操作
你可以直接基于这个头属性创建Service Bus订阅的过滤规则:
- 创建操作订阅:过滤条件设为
Microsoft.Dynamics.CRM.OperationType = 0 - 更新操作订阅:过滤条件设为
Microsoft.Dynamics.CRM.OperationType = 1
二、如何查看Dynamics发往Service Bus的消息及头信息?
有三种实用方式:
Azure Portal直接查看
进入你的Azure Service Bus主题对应的订阅,点击「Peek」按钮,选择目标消息后切换到「Properties」标签,即可查看所有消息头(含自定义应用属性)和payload内容。临时调试代码
写一段简单的Azure函数或控制台程序,接收消息并打印头信息:// Azure Service Bus触发函数示例 public static void Run([ServiceBusTrigger("your-topic", "your-subscription", Connection = "ServiceBusConnection")] Message message, ILogger log) { log.LogInformation("消息头属性列表:"); foreach (var prop in message.ApplicationProperties) { log.LogInformation($"{prop.Key}: {prop.Value}"); } log.LogInformation("消息内容: {Content}", Encoding.UTF8.GetString(message.Body)); }使用Service Bus Explorer工具
这是微软官方推荐的桌面工具,连接到你的Service Bus实例后,可直接浏览主题/订阅的消息,直观查看所有头元数据、属性和payload,还能快速测试过滤规则。
补充:如果默认头属性不存在怎么办?
若因版本或配置问题,消息头未携带操作类型属性,可修改Dynamics的发送插件,手动添加自定义头:
var message = new Microsoft.ServiceBus.Messaging.BrokeredMessage(); // 直接赋值操作类型字符串或枚举值 message.Properties["OperationType"] = context.MessageName;
之后即可基于这个自定义头设置过滤规则。
内容的提问来源于stack exchange,提问作者Sandeep C
相关产品推荐
相关产品推荐

