Search code examples
azureazureservicebusazure-functionsazure-servicebus-topics

How to debug ServiceBus-triggered Azure Function locally?


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?


Solution

  • 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);
        }
    }