EnableInstallers only works when SendOnly is not initiated

What is the reason that it’s only possible to use the EnableInstallers when SendOnly is not initiated. The situation that i’ve created a azure function that only sends to the bus, so i only want to create a topic automaticly by nservicebus.
When i remove the sendonly from the endpointconfiguration the topic is created with a que and that is not desirable.

Do you guys have a solutions for this? And is it a feature or a bug that the EnableInstallers only works when Sendonly is not initiated in the endpointconfiguration.

Thank you in advance,

Using 7.2.1 NServiceBus

John

Hi John

Running installers with a send-only endpoint is supported. I just double checked this with an acceptance tests

namespace NServiceBus.AcceptanceTests.Core.Installers
{
    using System.Threading.Tasks;
    using AcceptanceTesting;
    using EndpointTemplates;
    using Installation;
    using NUnit.Framework;

    public class When_installers_enabled_with_send_only : NServiceBusAcceptanceTest
    {
        [Test]
        public async Task Should_run_installers()
        {
            var context = await Scenario.Define<Context>()
                .WithEndpoint<EndpointWithInstaller>()
                .Done(c => c.EndpointsStarted)
                .Run();

            Assert.IsTrue(context.InstallerCalled);
        }

        class Context : ScenarioContext
        {
            public bool InstallerCalled { get; set; }
        }

        class EndpointWithInstaller : EndpointConfigurationBuilder
        {
            public EndpointWithInstaller()
            {
                // disable installers as installers are enabled by default in DefaultServer
                EndpointSetup<DefaultServer>(c =>
                {
                    c.EnableInstallers();
                    c.SendOnly();
                });
            }

            public class CustomInstaller : INeedToInstallSomething
            {
                Context testContext;

                public CustomInstaller(Context testContext)
                {
                    this.testContext = testContext;
                }

                public Task Install(string identity)
                {
                    testContext.InstallerCalled = true;
                    return Task.FromResult(0);
                }
            }
        }
    }
}

which passes.Are you talking about Azure Service Bus transport?

I just verified that the bundle-1 topic is not created in a send-only endpoint even when installers are enabled. I double checked with the legacy transport and there we create the bundle. And actually creating the bundle makes sense when the installers are enabled because

a) we can assume manage rights
b) even a send-only endpoint is allowed to publish and the existence of the bundle is crucial for the publish operation to succeed even if there are no subscribers

See Send-only endpoint does not create the publish Topic if it does not exist · Issue #44 · Particular/NServiceBus.Transport.AzureServiceBus · GitHub

Regards
Daniel

Hello Daniel,

This is exactly my problem:
https://github.com/Particular/NServiceBus.Transport.AzureServiceBus/issues/44

Thank you for the answer.

John

John I’ve made sure we track this issue better because it seems we slightly dropped the ball on it. Apology. In the meantime I suggest to manually create the topic bundle or use the transport cmd to create it.