public void FireClients(Common.Job job, string batchId) { var jobContext = job.ToContext(); if (Cache.GroupMapConnections.TryGetValue(jobContext.Group, out var connectionInfos)) { bool fired = false; foreach (var connectionInfo in connectionInfos) { if (Cache.ConnectionIdMapClassNames.TryGetValue(connectionInfo.ConnectionId, out var classNames)) { if (classNames.Contains(jobContext.Name)) { if (!fired) { fired = true; } Logger.LogInformation($"Fire job {job.Id}, batch {batchId} on clientip {connectionInfo.ClientIp}, connectionid {connectionInfo.ConnectionId}."); _options.InsertJobHistory(batchId, job.Id, connectionInfo.ClientIp, connectionInfo.ConnectionId); _hubContext.Clients.Client(connectionInfo.ConnectionId).SendAsync("Fire", jobContext, batchId); } } } if (!fired) { Logger.LogInformation($"No client watch job {job.Name}."); } } else { throw new SchedulerNetException("No client connected."); } }
public void FireClients(Common.Job job, string batchId) { var jobContext = job.ToContext(); var connections = _cache.GetConnectionFromGroup(jobContext.Group).AsList(); if (connections != null && connections.Count > 0) { bool fired = false; foreach (var connection in connections) { var classNames = _cache.GetClassNames(connection.Id); if (classNames.Contains(jobContext.Name)) { if (!fired) { fired = true; } Logger.LogInformation($"[{connection.RemoteIp}, {connection.Id}] trigger job '{job.Id}', batch '{batchId}', group '{job.Group}'."); _options.InsertJobHistory(batchId, job.Id, connection.RemoteIp, connection.Id); _hubContext.Clients.Client(connection.Id).SendAsync("Fire", jobContext, batchId); } } if (!fired) { Logger.LogInformation($"No client watch job {job.Name}."); } } else { throw new SchedulerNetException("No client connected."); } }
public override void Execute(CallbackJob job) { var batchId = Guid.NewGuid().ToString("N"); Logger.LogInformation($"Execute callback job {JsonConvert.SerializeObject(job)}, batch {batchId}."); _options.InsertJobHistory(batchId, job.Id); var msg = new HttpRequestMessage(job.Method, job.Url) { Content = new StringContent(job.Content, Encoding.UTF8, "application/json") }; var response = Client.SendAsync(msg).Result; response.EnsureSuccessStatusCode(); _options.ChangeJobHistoryStatus(batchId, job.Id, null, null, JobStatus.Success); }