Skip to content

Queue type support for RabbitMQ #328

@SeanFeldman

Description

@SeanFeldman

Describe the bug

Description

Trying to run against SC Connector for MT on RabbitMQ fails if the error queue is a classic queue.

Expected behavior

Should be able to provide queue type, classic or quorum.

Actual behavior

Queue type is hard-coded to quorum, blocking from running SC connector for MT.

Versions

SC connector: 1.0.13

Steps to reproduce

Compile and run

Relevant log output

<6>Diagnostics[0] -------------------------------------------------------------------------------------------
<6>Diagnostics[0] Connector Version:                  1.0.13
<6>Diagnostics[0] Error Queue:                        error
<6>Diagnostics[0] Service Control Queue:              Particular.ServiceControl
<6>Diagnostics[0] Poison Queue:                       Particular.ServiceControl.Connector.MassTransit_return.poison
<6>Diagnostics[0] Return Queue:                       Particular.ServiceControl.Connector.MassTransit_return
<6>Diagnostics[0] Queue Scan Interval:                00:01:00
<6>Diagnostics[0] Custom Checks Interval:             00:01:00
<6>Diagnostics[0] Heartbeat Interval:                 00:01:00
<6>Diagnostics[0] -------------------------------------------------------------------------------------------
<6>ServiceControl.Connector.MassTransit.ProvisionQueues[0] Creating queues if they don't already exist
Unhandled exception: RabbitMQ.Client.Exceptions.OperationInterruptedException: The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=406, text='PRECONDITION_FAILED - inequivalent arg 'x-queue-type' for queue 'Particular.ServiceControl' in vhost '/': received 'quorum' but current is 'classic'', classId=50, methodId=10
   at RabbitMQ.Client.Impl.SimpleBlockingRpcContinuation.GetReply(TimeSpan timeout)
   at RabbitMQ.Client.Impl.ModelBase.QueueDeclare(String queue, Boolean passive, Boolean durable, Boolean exclusive, Boolean autoDelete, IDictionary`2 arguments)
   at RabbitMQ.Client.Impl.ModelBase.QueueDeclare(String queue, Boolean durable, Boolean exclusive, Boolean autoDelete, IDictionary`2 arguments)
   at NServiceBus.Transport.RabbitMQ.ConventionalRoutingTopology.Initialize(IModel channel, IEnumerable`1 receivingAddresses, IEnumerable`1 sendingAddresses) in /_/src/NServiceBus.Transport.RabbitMQ/Routing/ConventionalRoutingTopology.cs:line 83
   at NServiceBus.Transport.RabbitMQ.RabbitMQTransportInfrastructure.SetupInfrastructure(String[] sendingQueues) in /_/src/NServiceBus.Transport.RabbitMQ/RabbitMQTransportInfrastructure.cs:line 58
   at NServiceBus.RabbitMQTransport.Initialize(HostSettings hostSettings, ReceiveSettings[] receivers, String[] sendingAddresses, CancellationToken cancellationToken) in /_/src/NServiceBus.Transport.RabbitMQ/RabbitMQTransport.cs:line 234
   at AdapterRabbitMqConfiguration.<>c__DisplayClass0_1.<<UsingRabbitMQ>b__3>d.MoveNext() in C:\repos\Particular\ServiceControl.Connector.MassTransit\src\ServiceControl.Connector.MassTransit.RabbitMQ\AdapterRabbitMqConfiguration.cs:line 37
--- End of stack trace from previous location ---
   at TransportInfrastructureFactory.CreateTransportInfrastructure(HostSettings hostSettings, ReceiveSettings[] receivers, String[] sendingAddresses, CancellationToken cancellationToken) in C:\repos\Particular\ServiceControl.Connector.MassTransit\src\ServiceControl.Connector.MassTransit\TransportInfrastructureFactory.cs:line 21
   at ServiceControl.Connector.MassTransit.ProvisionQueues.TryProvision(CancellationToken cancellationToken) in C:\repos\Particular\ServiceControl.Connector.MassTransit\src\ServiceControl.Connector.MassTransit\ProvisionQueues.cs:line 38
   at ServiceControl.Connector.MassTransit.Host.Commands.StartupCommand.InternalHandler(RunMode runMode, Boolean isConsole, String[] args, CancellationToken cancellationToken) in C:\repos\Particular\ServiceControl.Connector.MassTransit\src\ServiceControl.Connector.MassTransit.Host\Commands\StartupCommand.cs:line 67
   at ServiceControl.Connector.MassTransit.Host.Commands.StartupCommand.<>c__DisplayClass0_0.<<-ctor>b__0>d.MoveNext() in C:\repos\Particular\ServiceControl.Connector.MassTransit\src\ServiceControl.Connector.MassTransit.Host\Commands\StartupCommand.cs:line 33
--- End of stack trace from previous location ---
   at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<<UseExceptionHandler>b__0>d.MoveNext()

Additional Information

Workarounds

Possible solutions

Additional information

Metadata

Metadata

Assignees

No one assigned

    Labels

    FeatureNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions