private string CreateCore(BackgroundTaskEnvelope task, Func <string, IState> createState) { var queue = this.GetQueueForTask(task); if (this._logger.IsEnabled(LogLevel.Debug)) { this._logger.LogDebug("Enqueuing task. task_type={0} queue={1}", task.GetType().Name, queue); } var id = this._jobClient.Create( Job.FromExpression <HangfireTaskExecutor>(e => e.Execute( new HangfireBackgroundTaskWrapper(task), null, CancellationToken.None)), createState(queue)); return(id); }
private string CreateCore(BackgroundTaskEnvelope task, Func <string, IState> createState) { var queue = GetQueueForTask(task.Task); if (this._logger.IsEnabled(LogLevel.Debug)) { this._logger.LogDebug("Enqueuing task {TaskType} to {Queue}", task.GetType().Name, queue); } var hangfireBackgroundTaskEnvelope = new HangfireBackgroundTaskWrapper(task); task.Headers = new Dictionary <string, string>(); using var activity = TaskExecutor.ActivitySource.StartActivity($"{hangfireBackgroundTaskEnvelope.Envelope.Task.GetType()} send", ActivityKind.Producer); ActivityContext contextToInject = default; if (activity != null) { contextToInject = activity.Context; } else if (Activity.Current != null) { contextToInject = Activity.Current.Context; } TaskExecutor.Propagator.Inject( new PropagationContext(contextToInject, Baggage.Current), task.Headers, (c, k, v) => c[k] = v); activity?.SetTag("messaging.system", "hangfire"); activity?.SetTag("messaging.destination", queue); activity?.SetTag("messaging.destination_kind", "queue"); var id = this._jobClient.Create( Job.FromExpression <HangfireTaskExecutor>(e => e.Execute( hangfireBackgroundTaskEnvelope, null, CancellationToken.None)), createState(queue)); return(id); }