本文整理汇总了C#中QueueClient.RegisterSessionHandlerFactoryAsync方法的典型用法代码示例。如果您正苦于以下问题:C# QueueClient.RegisterSessionHandlerFactoryAsync方法的具体用法?C# QueueClient.RegisterSessionHandlerFactoryAsync怎么用?C# QueueClient.RegisterSessionHandlerFactoryAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QueueClient
的用法示例。
在下文中一共展示了QueueClient.RegisterSessionHandlerFactoryAsync方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: btnStart_Click
private async void btnStart_Click(object sender, EventArgs e)
{
if (string.Compare(btnStart.Text, Start, StringComparison.OrdinalIgnoreCase) == 0)
{
receiverBrokeredMessageInspector = cboReceiverInspector.SelectedIndex > 0
? Activator.CreateInstance(serviceBusHelper.BrokeredMessageInspectors[cboReceiverInspector.Text]) as IBrokeredMessageInspector
: null;
cancellationTokenSource = new CancellationTokenSource();
btnStart.Text = Stop;
blockingCollection = new BlockingCollection<Tuple<long, long, long>>();
timer = new System.Timers.Timer
{
AutoReset = true,
Enabled = true,
Interval = 1000 * txtRefreshInformation.IntegerValue
};
if (startLog != null && checkBoxLogging.Checked)
{
startLog();
}
timer.Elapsed += timer_Elapsed;
autoComplete = checkBoxAutoComplete.Checked;
logging = checkBoxLogging.Checked;
verbose = checkBoxVerbose.Checked;
tracking = checkBoxTrackMessages.Checked;
try
{
receiveMode = cboReceivedMode.SelectedIndex == 1 ? ReceiveMode.PeekLock : ReceiveMode.ReceiveAndDelete;
if (entityDescription is QueueDescription)
{
var currentQueue = entityDescription as QueueDescription;
queueClient = serviceBusHelper.MessagingFactory.CreateQueueClient(currentQueue.Path, receiveMode);
queueClient.PrefetchCount = txtPrefetchCount.IntegerValue;
if (currentQueue.RequiresSession)
{
await queueClient.RegisterSessionHandlerFactoryAsync(
new CustomMessageSessionAsyncHandlerFactory(new CustomMessageSessionAsyncHandlerConfiguration
{
Logging = logging,
Tracking = tracking,
AutoComplete = autoComplete,
MessageEncoder = encoder,
ReceiveMode = receiveMode,
GetElapsedTime = GetElapsedTime,
UpdateStatistics = UpdateStatistics,
WriteToLog = writeToLog,
MessageInspector = receiverBrokeredMessageInspector,
ServiceBusHelper = serviceBusHelper,
TrackMessage = bm => Invoke(new Action<BrokeredMessage>(m => messageCollection.Add(m)), bm)
}), GetSessionHandlerOptions());
}
else
{
#pragma warning disable 4014
Task.Run(() => queueClient.OnMessageAsync(OnMessageAsync, GetOnMessageOptions()));
#pragma warning restore 4014
}
}
if (entityDescription is SubscriptionDescription)
{
var currentSubscription = entityDescription as SubscriptionDescription;
subscriptionClient = serviceBusHelper.MessagingFactory.CreateSubscriptionClient(currentSubscription.TopicPath,
currentSubscription.Name,
receiveMode);
subscriptionClient.PrefetchCount = txtPrefetchCount.IntegerValue;
if (currentSubscription.RequiresSession)
{
await subscriptionClient.RegisterSessionHandlerFactoryAsync(
new CustomMessageSessionAsyncHandlerFactory(new CustomMessageSessionAsyncHandlerConfiguration
{
Logging = logging,
Tracking = tracking,
AutoComplete = autoComplete,
MessageEncoder = encoder,
ReceiveMode = receiveMode,
GetElapsedTime = GetElapsedTime,
UpdateStatistics = UpdateStatistics,
WriteToLog = writeToLog,
ServiceBusHelper = serviceBusHelper,
TrackMessage = bm => Invoke(new Action<BrokeredMessage>(m => messageCollection.Add(m)), bm)
}), GetSessionHandlerOptions());
}
else
{
#pragma warning disable 4014
Task.Run(() => subscriptionClient.OnMessageAsync(OnMessageAsync, GetOnMessageOptions()));
#pragma warning restore 4014
}
}
#pragma warning disable 4014
Task.Run(new Action(RefreshGraph));
#pragma warning restore 4014
GetElapsedTime();
}
catch (Exception ex)
{
HandleException(ex);
//.........这里部分代码省略.........
示例2: StartReceivingMessages
public Task StartReceivingMessages()
{
queueClient = ServiceBusCommandQueueSender.CreateQueueClient(settings);
var options = new SessionHandlerOptions
{
AutoComplete = false,
MessageWaitTimeout = TimeSpan.FromSeconds(3)
};
if (settings.MaxConcurrentSessions != null)
{
options.MaxConcurrentSessions = settings.MaxConcurrentSessions.Value;
}
options.ExceptionReceived += (sender, e) => exceptionSubject.OnNext(e.Exception);
return queueClient.RegisterSessionHandlerFactoryAsync(this, options);
}
示例3: SessionReceiver
public SessionReceiver(ConnectionContext context, QueueClient queueClient, Uri inputAddress, IPipe<ReceiveContext> receivePipe, ReceiveSettings receiveSettings, IReceiveObserver receiveObserver, ITaskSupervisor supervisor)
{
_queueClient = queueClient;
_inputAddress = inputAddress;
_receivePipe = receivePipe;
_receiveSettings = receiveSettings;
_receiveObserver = receiveObserver;
_participant = supervisor.CreateParticipant($"{TypeMetadataCache<Receiver>.ShortName} - {inputAddress}", Stop);
var options = new SessionHandlerOptions
{
AutoComplete = false,
AutoRenewTimeout = receiveSettings.AutoRenewTimeout,
MaxConcurrentSessions = receiveSettings.MaxConcurrentCalls,
MessageWaitTimeout = receiveSettings.MessageWaitTimeout
};
options.ExceptionReceived += (sender, x) =>
{
if (!(x.Exception is OperationCanceledException))
{
if (_log.IsErrorEnabled)
_log.Error($"Exception received on session receiver: {_inputAddress} during {x.Action}", x.Exception);
}
if (_currentPendingDeliveryCount == 0)
{
if (_log.IsDebugEnabled)
_log.DebugFormat("Session receiver shutdown completed: {0}", _inputAddress);
_participant.SetComplete();
}
};
IMessageSessionAsyncHandlerFactory handlerFactory = new MessageSessionAsyncHandlerFactory(context, supervisor, this);
queueClient.RegisterSessionHandlerFactoryAsync(handlerFactory, options);
_participant.SetReady();
}