Azure / Azure/azure-functions-java-worker

Service Bus OutputBinding doesn't support ServiceBusMessage type with Metadata

Open
#570 2 comments 6 reactions 1 assignee Claimed by @shreyas-gopalakrishna View on GitHub
area:java-functions Bug needs-investigation Needs: Triage (Functions)
Dominant language
Java
Stars
103
Forks
74
Avg merge
4d 8h
Merged PRs (30d)
2

Description

There doesn't appear to be equivalent functionality for setting ServiceBusMessage Metadata in the Java worker. Compare with the C# documentation: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-output?tabs=in-process%2Cextensionv5&pivots=programming-language-csharp#usage

> Use the [ServiceBusMessage](https://docs.microsoft.com/en-us/dotnet/api/azure.messaging.servicebus.servicebusmessage) type when sending messages with metadata. Parameters are defined as return type attributes. Use an ICollector or IAsyncCollector to write multiple messages. A message is created when you call the Add method.

Is there no equivalent in Java?

#### Repro steps

Provide the steps required to reproduce the problem:

1. Create an Azure Function.
2. Add **azure-messaging-servicebus** dependency to project.
3. Add a `@ServiceBusTopicOutput binding` of type `OutputBinding`.
4. Create a `ServiceBusMessage msg = new ServiceBusMessage("message body") `object.
5. Set some metadata via `sbMessage.getApplicationProperties().put("foo","bar")`.
6. call `.setValue(msg)` on the output binding.
7. Run the function.

#### Expected behavior

A message is added to the Service Bus topic with a body of "message body" and custom metadata of "foo": "bar".

#### Actual behavior

The resulting message body on the topic is a ServiceBusMessage serialized as a POJO object. Custom metadata is missing.

#### Known workarounds

Use a `ServiceBusSenderClient` instead of output bindings.

#### Related information

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.