Welcome to the Microsoft Q&A Platform!
Thank you for reaching out. I understand you're having trouble retrieving the Correlation ID in your Azure Function (Service Bus Queue Trigger). This issue occurs because Azure Functions do not support direct binding to ServiceBusReceivedMessage. Instead, you should bind the message as a String and use @BindingName to extract metadata properties.
Please update your function as follows:
package com.function.servicebus;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
import java.util.Map;
/**
* Azure Functions with Service Bus Trigger.
*/
public class LoggerServiceBus {
@FunctionName("loggerServiceBus")
public void run(
// CHANGED: Replaced `ServiceBusReceivedMessage` with `String`
@ServiceBusQueueTrigger(name = "message", queueName = "orders", connection = "AzureServiceBus") String message, // CHANGED
// CHANGED: Added @BindingName to extract broker properties
@BindingName("MessageId") String messageId, // CHANGED
@BindingName("CorrelationId") String correlationId, // CHANGED
@BindingName("ApplicationProperties") Map<String, Object> applicationProperties, // CHANGED
final ExecutionContext context
) {
context.getLogger().info("Java Service Bus Queue trigger function executed.");
context.getLogger().info("Received Message: " + message);
context.getLogger().info("Message ID: " + messageId);
context.getLogger().info("Correlation ID: " + correlationId); // CHANGED
if (applicationProperties != null) {
applicationProperties.forEach((key, value) ->
context.getLogger().info("Custom Property - " + key + ": " + value)
);
}
}
}