Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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
         });
     }
 }