Rebus Azure Pub Sub pattern

93 Views Asked by At

I'm exploring the Rebus library. I implemented the Pub/Sub successfully in Microsoft.NET.Sdk.Worker project with FileSystem transport. But I'm struggling to make it work with AzureServiceBus. I have below configuration in Program.cs:

IHost host = Host.CreateDefaultBuilder(args)
        .ConfigureServices((context, services) => {
            services.AddLogging();

            services.AddRebus(
                (config, provider) => {
                    config
                        .Logging(l => l.Console())
                        .Routing(r => r.TypeBased().MapAssemblyOf<CreateNewReportMessage>(busConfig.MainQueue))
                        //.Transport(x => x.UseFileSystem(busConfig.FileSystemTransportBaseDirectory, busConfig.MainQueue))
                        //.Subscriptions(x => x.UseJsonFile(Path.Combine(busConfig.FileSystemTransportBaseDirectory, "rebus_subscriptions.json")))
                        .Transport(x => x.UseAzureServiceBus(busConfig.AzureSBConnectionString, busConfig.MainQueue).AutomaticallyRenewPeekLock());
                    return config;
                },
                onCreated: async bus => {
                    await bus.Subscribe<CreateNewReportMessage>();
                }
            );
            services.AutoRegisterHandlersFromAssemblyOf<Program>();
        })
        .Build();

    await host.RunAsync();

I'm getting below 400 Bad request error. The app is published as Azure WebJob.

INFO] [DBG] Rebus.AzureServiceBus.AzureServiceBusTransport (Thread #1): Registering subscription for topic "MyServiceBus/MyServiceBus.Messages.CreateNewReportMessage"
INFO]       Successfully created bus instance RebusBus Rebus 1 (isDefaultBus: True)
INFO]       Application started. Press Ctrl+C to shut down.
INFO] fail: Microsoft.Extensions.Hosting.Internal.Host[9]
INFO]       BackgroundService failed
INFO]        ---> Azure.RequestFailedException: The specified HTTP verb (GET) is not valid. To know more visit https://aka.ms/sbResourceMgrExceptions. . TrackingId:1808
INFO]       Status: 400 (Bad Request)
INFO]          --- End of inner exception stack trace ---
INFO]          at Azure.Messaging.ServiceBus.Administration.HttpRequestAndResponse.ThrowIfRequestFailedAsync(Request request, Response response)
INFO]          at Azure.Messaging.ServiceBus.Administration.HttpRequestAndResponse.SendHttpRequestAsync(Request request, CancellationToken cancellationToken)
INFO]          at Azure.Messaging.ServiceBus.Administration.HttpRequestAndResponse.GetEntityAsync(String entityPath, String query, Boolean enrich, CancellationToken can
INFO]          at Azure.Messaging.ServiceBus.Administration.ServiceBusAdministrationClient.TopicExistsAsync(String name, CancellationToken cancellationToken)
INFO]          at Rebus.AzureServiceBus.AzureServiceBusTransport.EnsureTopicExists(String normalizedTopic)
INFO]          at Rebus.AzureServiceBus.AzureServiceBusTransport.<>c__DisplayClass25_0.<<RegisterSubscriber>b__0>d.MoveNext()
INFO]       --- End of stack trace from previous location ---
INFO]          at Rebus.Internals.ExceptionIgnorant.Execute(Func`1 function, CancellationToken cancellationToken)
INFO]          at Rebus.Internals.ExceptionIgnorant.Execute(Func`1 function, CancellationToken cancellationToken)
INFO]          at Rebus.AzureServiceBus.AzureServiceBusTransport.RegisterSubscriber(String topic, String subscriberAddress)
INFO]          at Rebus.Bus.RebusBus.InnerSubscribe(String topic)
0

There are 0 best solutions below