protected override Task OnStart(IMessageSession context) { foreach (var receiveChannel in manageReceiveChannels.GetReceiveChannels()) { var receiver = new SingleCallChannelReceiver(channelReceiverFactory, deduplicator, databus); receiver.Start(receiveChannel, receiveChannel.MaxConcurrency, MessageReceivedOnChannel); activeReceivers.Add(receiver); Logger.InfoFormat("Receive channel started: {0}", receiveChannel); } return(Task.FromResult(0)); }
protected override Task OnStart(IMessageSession context, CancellationToken cancellationToken = default) { // only use transaction scope if both transport and persistence are able to enlist with the transaction scope. // If one of them cannot enlist, use no transaction scope as partial rollbacks of the deduplication process can cause incorrect side effects. var useTransactionScope = deduplicationStorage.SupportsDistributedTransactions && transportTransactionMode == TransportTransactionMode.TransactionScope; Logger.DebugFormat("Using TransactionScope: {0} (based on storage TransactionScope support: {1} and transport transaction mode: {2}).", useTransactionScope, deduplicationStorage.SupportsDistributedTransactions, transportTransactionMode); foreach (var receiveChannel in manageReceiveChannels.GetReceiveChannels()) { var receiver = new SingleCallChannelReceiver(channelReceiverFactory, deduplicationStorage, databus, useTransactionScope); receiver.Start(receiveChannel, receiveChannel.MaxConcurrency, MessageReceivedOnChannel); activeReceivers.Add(receiver); Logger.InfoFormat("Receive channel started: {0}", receiveChannel); } return(Task.CompletedTask); }