这是JAVA中的azure网页示例,用于从azure服务总线获取消息内容:
@FunctionName("sbprocessor")
public void serviceBusProcess(
@ServiceBusQueueTrigger(name = "msg",
queueName = "myqueuename",
connection = "myconnvarname") String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
这仅返回消息的内容。如何获取您可以在服务总线资源管理器中看到的其他字段:标签、自定义属性和代理属性?
最佳答案
您可以通过向方法参数添加 @BindingName("UserProperties")
等注释来检索消息元数据,如下所示。您可以使用 binding expression 绑定(bind)到消息的任何元数据。在下面的例子中,它是“属性”和“标签”。
@FunctionName("sbprocessor")
public void serviceBusProcess(
@ServiceBusQueueTrigger(name = "msg", queueName = "myqueuename", connection = "myconnvarname")
String message,
final ExecutionContext context,
@BindingName("UserProperties")
Map<String, Object> properties,
@BindingName("Label")
String label) {
context.getLogger().info("Message received: " + message + " , properties: " + properties + " , label: " + label);
}
我使用 Service Bus Explorer 作为消息发送者来设置消息的元数据,如下所示,并且能够在“UserProperties”绑定(bind)中使用上述代码在消费者端查看这些元数据。
注意C# 函数 SDK 在这方面比 Java 有优势。在 C# 中,您可以获得整个 BrokeredMessage 对象,这样更容易直接导航元数据。但不幸的是,目前在 Java SDK 中这是不可能的,您必须单独绑定(bind)。
关于java - 在带有azure函数@ServiceBusQueueTrigger的java中,如何获取Label,Custom Properties和Broker Properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64554593/