Java中使用serviceBusMessage能否设置Azure服务总线消息的用户属性?
关于Azure服务总线Java SDK
ServiceBusMessage设置用户属性的解答 Java版Azure服务总线SDK的ServiceBusMessage完全支持设置自定义用户属性,你没找到对应方法是因为相关操作是通过applicationProperties字段暴露的,具体操作逻辑如下:
- 调用
ServiceBusMessage实例的getApplicationProperties()方法,会返回一个可读写的Map<String, Object>对象,这个Map内存储的所有键值对就是消息的用户属性 - 你可以直接往这个Map里新增、修改、删除自定义属性,所有改动都会直接关联到当前
ServiceBusMessage实例,发送时会自动作为用户属性传递到服务端 - 服务总线的订阅过滤器可以直接匹配这些自定义属性完成过滤逻辑
示例代码参考:
// 构造消息实例 ServiceBusMessage message = new ServiceBusMessage(BinaryData.fromString("消息payload内容")); // 新增自定义用户属性 message.getApplicationProperties().put("orderType", "NORMAL"); message.getApplicationProperties().put("orderAmount", 199); message.getApplicationProperties().put("region", "cn-north"); // 发送消息 sender.sendMessage(message);
注意:用户属性的值仅支持字符串、整型、浮点型、布尔型等基本数据类型,不建议传入复杂自定义对象,避免序列化异常导致消息发送失败。
过滤器规则配置时直接使用你设置的属性名匹配即可,比如要过滤订单类型为NORMAL的消息,规则可以写为orderType = 'NORMAL'
内容的提问来源于stack exchange,提问作者Coding_Rabbit
相关产品推荐
相关产品推荐

