public void Handle(FutureEventCanceledEvent futureEventCanceledEvent, IMessageMetadata metadata) { var message = futureEventCanceledEvent; var key = CreateScheduleKey(message.FutureEventId, message.SourceId, ""); var unscheduleMessage = new Unschedule(key); _unscheduleActorRef.Handle(unscheduleMessage); }
private void CheckExistingTimeouts() { DateTime now = DateTime.UtcNow; _log.DebugFormat("TimeoutService Checking For Existing Timeouts: {0}", now.ToLocalTime()); try { var sagas = _repository.Where(x => x.TimeoutAt < now && x.CurrentState == TimeoutSaga.WaitingForTime).ToArray(); foreach (TimeoutSaga saga in sagas) { TimeoutSaga instance = saga; _queue.Enqueue(() => _bus.Publish(new TimeoutExpired { CorrelationId = instance.CorrelationId, Tag = instance.Tag })); } } catch (Exception ex) { _log.Error("Error rescheduling existing timeouts", ex); } finally { if (_unschedule != null) { _unschedule(); } _log.DebugFormat("Scheduling next check at " + DateTime.Now); _unschedule = _scheduler.Schedule(1000, () => _queue.Enqueue(CheckExistingTimeouts)); } }
public void Start(IServiceBus bus) { _bus = bus; _controlUri = _bus.ControlBus.Endpoint.Uri; _dataUri = _bus.Endpoint.Uri; _unsubscribe = _bus.ControlBus.Subscribe(this); var message = new EndpointCameOnline(SystemId, _controlUri, _dataUri, _heartbeatIntervalInSeconds); _bus.ControlBus.Publish(message); _unschedule = _scheduler.Schedule(_heartbeatIntervalInMilliseconds, _heartbeatIntervalInMilliseconds, PublishHeartbeat); }
private void Unschedule(Unschedule msg) { try { _logger.Debug("Unscheduling job {Task}", msg.Key); _scheduler.DeleteJob(msg.Key.ToJobKey()); _logger.Debug("Unscheduled job {Task}", msg.Key); Sender.Tell(new Unscheduled(msg.Key)); } catch (Exception e) { _logger.Error(e, "Error while Unscheduled job {Task}", msg.Key); Sender.Tell(new Failure { Exception = e, Timestamp = BusinessDateTime.UtcNow }); } }