How to debug ServiceBus-triggered Azure Function locally?

22k views Asked by At

My function will be triggered from an existing ServiceBus topic. I have created the function using the new tooling in VS2017 (15.3) preview, as a compiled function.

How can I test this function locally?

3

There are 3 answers

0
Amor On BEST ANSWER

If you want to check whether your function will be triggered by Azure Service Bus messages, you need to own a Azure Subscription and create a Service Bus namespace because Microsoft haven't provided Azure Service Bus emulator like Azure Storage emulator.

If you want to debug your function, you could create a new console application and invoke the function you defined. Steps below are for your reference.

Step 1, Create a Console Application.

Step 2, Add Project reference to the function project.

Step 3, Install Microsoft.Azure.WebJobs -Version 2.1.0-beta1 package from NuGet to your console application.

Install-Package Microsoft.Azure.WebJobs -Version 2.1.0-beta1 

Step 4, Use following code to invoke your function.

class Program
{
    static void Main(string[] args)
    {
        Function1.Run("msg1", new MyTraceWriter(TraceLevel.Info));
    }
}

public class MyTraceWriter : TraceWriter
{
    public MyTraceWriter(TraceLevel level) : base(level)
    {

    }

    public override void Trace(TraceEvent traceEvent)
    {
        Console.WriteLine(traceEvent.Message);
    }
}
0
Ali On

You run the project in debug mode and create a JSON payload for the message then you can post a complete json object in this format.

{
    "input": "<trigger_input>"
}

for example

http://localhost:7071/admin/functions/OrderFunction

enter image description here

You can then read message in your function body and get the Json you posted.

Encoding.UTF8.GetString(message.Body)
5
TomTichy On

For a non-http triggered function, you can send a POST request to the local administrator endpoint. More info here

like this (I am using Postman) enter image description here