Open andreasohlund opened 7 years ago
@Particular/sqlserver-transport-maintainers can you double check that I got the section about your transport right?
@andreasohlund I have no context: what problem are we solving here?
We have many cases of transports ”pulling stuff out of settings” and that leads to bugs due to invalid assumptions, timing etc In the future we want the core to pass relevant settings explicitly in the transport seam so that transports would only user ”settings” for their own transport specific dials and knobs.
This issue just captures the current lay of the land.
Does this make sense?
@andreasohlund I added two more findings for the SQL Server transport in the issue description.
Added
NSB Raw
Needs to provide all relevant settings to mimic what the core does which is very error prone and brittle
👍 but I think this needs to be raised on pdev.
Yea, will raise a more overarching issue in pdev soon On Tue, 7 Nov 2017 at 10:42, Tim Bussmann notifications@github.com wrote:
👍 but I think this needs to be raised on pdev.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Particular/NServiceBus/issues/5044#issuecomment-342428339, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHoZBN--Ztuh1RSX5Csw2iasREnQfEoks5s0CYdgaJpZM4QCaBF .
One category of items that will be common to a lot of transports is all of the stuff needed to make the timeout manager "hybrid" mode work for backcompat for native delays.
Adding support for that in core directly would eliminate a lot of stuff from the transports.
Instead we should pass the needed settings in the transport seam.
This issue will start with surveying the use in downstreams in order to serve as input to a "transport seam vNext".
SqlTransport
settings.GetOrDefault<FeatureState>(typeof(TimeoutManager).FullName) == FeatureState.Disabled;
var delayedMessageProcessor = new DelayedMessageProcessor(dispatcher, settings.LocalAddress());
var delayedQueueLogialAddress = settings.LogicalAddress().CreateQualifiedAddress(delayedDeliverySettings.Suffix);
settings.GetOrCreate<EndpointInstances>().AddOrReplaceInstances("SqlServer", schemaAndCatalogSettings.ToEndpointInstances());
var externalTimeoutManagerAddress = settings.GetOrDefault<string>("NServiceBus.ExternalTimeoutManagerAddress") != null;
var sendOnlyEndpoint = settings.GetOrDefault<bool>("Endpoint.SendOnly");
Learning
var errorQueueAddress = settings.ErrorQueueAddress();
MSMQ
settings.GetOrDefault<bool>("Endpoint.SendOnly")
settings.TryGetExplicitlyConfiguredErrorQueueAddress(out string _))
var bindings = settings.Get<QueueBindings>()
ASQ (Not complete)
ASB
TBD
Rabbit
TBD
SQS
TBD
EventStore
TBD
NSB Raw
Needs to provide all relevant settings to mimic what the core does which is very error prone and brittle