По крайней мере, в Java свойства метаданных должны извлекаться через дополнительные аннотированные параметры, в данном случае:
//The system properties, including the event data
@BindingName("SystemProperties") Map<String, Object> systemProperties
ИД устройства можно затем извлечь из этого параметра:
String deviceId = (String) systemProperties.get("iothub-connection-device-id");
Параметр message
, отмеченный @EventHubTrigger
, должен быть строкой или, возможно, байтовым массивом.
POJO (или EventData
в этом отношении) не может быть отображено в этом случае, так как данные поддержки содержат только полезную нагрузку / значение события.
Итак, функция должна выглядеть так:
public class TranslateEndpoint {
/**
* This function will be invoked when an event is received from Event Hub.
*/
@FunctionName("TranslateEndpoint")
public void run(
@BindingName("SystemProperties") Map<String, Object> systemProperties,
@EventHubTrigger(name = "message", eventHubName = "NAME-DeviceIntegration", connection = "HostName=HOST;SharedAccessKeyName=NAME;SharedAccessKey=KEY=", consumerGroup = "$Default", cardinality = Cardinality.ONE) String message,
final ExecutionContext context
) {
String deviceId = (String) systemProperties.get("iothub-connection-device-id");
//decode/parse message string
//...
}
}
Документация:
Не могу не сказать, что документация может быть менее громоздкой, так же как API на всех поддерживаемых языках могут быть более согласованными. Я все еще могу что-то упустить.