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); StopListener().Wait(); btnStart.Text = Start; } } else { try { await StopListener(); btnStart.Text = Start; } catch (Exception ex) { HandleException(ex); } } }
public Task RegisterSessionHandlerFactoryAsync(IMessageSessionAsyncHandlerFactory factory, EventHandler <ExceptionReceivedEventArgs> exceptionHandler) { return(_client.RegisterSessionHandlerFactoryAsync(factory, _settings.GetSessionHandlerOptions(exceptionHandler))); }
public Task RegisterSessionHandlerFactoryAsync(IMessageSessionAsyncHandlerFactory factory, SessionHandlerOptions options) { return(_client.RegisterSessionHandlerFactoryAsync(factory, options)); }
/// <summary> /// Start the handler. /// </summary> /// <param name="sessionMessageAsyncHandlerFactory"></param> /// <param name="sessionHandlerOptions"></param> /// <returns></returns> internal override Task OnStartAsync(SessionMessageAsyncHandlerFactory sessionMessageAsyncHandlerFactory, SessionHandlerOptions sessionHandlerOptions) { return(_client.RegisterSessionHandlerFactoryAsync(sessionMessageAsyncHandlerFactory, sessionHandlerOptions)); }