コード例 #1
0
 private void lstExecuteResult_MouseDoubleClick(object sender, MouseEventArgs e)
 {
     if (ProcessErrors.ContainsKey(lstExecuteResult.SelectedIndex) && ProcessErrors[lstExecuteResult.SelectedIndex] != null)
     {
         frmInfo.ShowError(Language.Title, ProcessErrors[lstExecuteResult.SelectedIndex], this);
     }
 }
コード例 #2
0
 public BatchCheckpointEventHandler(
     ProcessEvents processEvents,
     ProcessErrors processErrors,
     SaveCheckpoint checkpoint)
 {
     _processEvents = processEvents;
     _processErrors = processErrors;
     _checkpoint    = checkpoint;
 }
コード例 #3
0
 public static async Task ProcessAsync(
     this Task <IReceiverConnection> receiver,
     IWebHostBuilder webHostBuilder,
     Action <HttpRequestMessage> eventRequestBuilder,
     Action <HttpResponseMessage, HttpRequestMessage> poisonRequestBuilder = default,
     ProcessErrors processErrors         = default,
     int?maxBatchSize                    = default,
     TimeSpan?waitTime                   = default,
     CancellationToken cancellationToken = default)
 {
     using (var server = new TestServer(webHostBuilder))
         using (var client = server.CreateClient())
         {
             var events = Processors.CreateSerialEventProcessor(client, eventRequestBuilder, poisonRequestBuilder);
             await receiver.ProcessAsync(events, processErrors, maxBatchSize, waitTime, cancellationToken).ConfigureAwait(false);
         }
 }
コード例 #4
0
        public static async Task ProcessAsync(
            this Task <IReceiverConnection> receiverConnection,
            ProcessEvents processEvents,
            ProcessErrors processErrors         = default,
            int?maxBatchSize                    = default,
            TimeSpan?waitTime                   = default,
            CancellationToken cancellationToken = default)
        {
            var connection = await receiverConnection.ConfigureAwait(false);

            await connection.RunAsync(
                processEvents : processEvents,
                processErrors : processErrors ?? (_ => Task.CompletedTask),
                maxBatchSize : maxBatchSize,
                waitTime : waitTime,
                cancellationToken : cancellationToken).ConfigureAwait(false);
        }
コード例 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <remarks>
        /// We can't use PartitionReceiver.SetReceiveHandler because it has an Environment.FailFast()
        /// which might kill multiple partitions unnecessarily if they're hosted in the same process in Service Fabric.
        /// </remarks>
        /// <param name="processor"></param>
        /// <param name="maxBatchSize"></param>
        /// <param name="waitTime"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task RunAsync(
            ProcessEvents processEvents,
            ProcessErrors processErrors,
            int?maxBatchSize  = default,
            TimeSpan?waitTime = default,
            CancellationToken cancellationToken = default)
        {
            var handler = _handlers(processEvents, processErrors);

            foreach (var _ in _loop)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    break;
                }

                var activity = new Activity("Process");
                var events   = default(IEnumerable <TestableEventData>);

                try
                {
                    if (ReceiveDiagnostics.IsEnabled("Process"))
                    {
                        ReceiveDiagnostics.StartActivity(
                            activity: activity,
                            args: new { });
                    }

                    events = await _receiver.ReceiveAsync(
                        maxMessageCount : maxBatchSize ?? Constants.DefaultMaxBatchSize,
                        waitTime : waitTime ?? Constants.DefaultOperationTimeout).ConfigureAwait(false);

                    if (events == null)
                    {
                        continue;
                    }

                    await handler.ProcessEventsAsync(events).ConfigureAwait(false);
                }
                catch (ReceiverDisconnectedException ex)
                {
                    if (ReceiveDiagnostics.IsEnabled("Disconnection"))
                    {
                        ReceiveDiagnostics.Write("Disconnection", new { Exception = ex });
                    }

                    // Another partition has picked up the work,
                    // end the loop and finish RunAsync.
                    await _receiver.CloseAsync().ConfigureAwait(false);

                    break;
                }
                catch (Exception ex)
                {
                    if (ReceiveDiagnostics.IsEnabled("Failure"))
                    {
                        ReceiveDiagnostics.Write("Failure", new { Exception = ex });
                    }

                    await handler.ProcessErrorAsync(ex).ConfigureAwait(false);

                    throw;
                }
                finally
                {
                    if (events != null)
                    {
                        foreach (var @event in events)
                        {
                            @event.Dispose();
                        }
                    }

                    if (ReceiveDiagnostics.IsEnabled("Process"))
                    {
                        ReceiveDiagnostics.StopActivity(
                            activity: activity,
                            args: new { });
                    }
                }
            }
        }