public void Create_Default() { var date = DateTime.Now; var test = new MessageToReset(100, date, null); Assert.Equal(100, test.QueueId); Assert.Equal(date, test.HeartBeat); }
public void Create_Default() { const int id = 293; var date = DateTime.Now; var message = new MessageToReset(id, date); var test = new ResetHeartBeatCommand(message); Assert.Equal(message, test.MessageReset); }
/// <inheritdoc /> public IEnumerable <MessageToReset <int> > Handle(FindMessagesToResetByHeartBeatQuery <int> query) { if (query.Cancellation.IsCancellationRequested) { return(Enumerable.Empty <MessageToReset <int> >()); } using (var db = _connectionInformation.GetDatabase()) { //before executing a query, double check that we aren't stopping //otherwise, there is a chance that the tables no longer exist in memory mode if (query.Cancellation.IsCancellationRequested) { return(Enumerable.Empty <MessageToReset <int> >()); } var col = db.Database.GetCollection <Schema.MetaDataTable>(_tableNameHelper.MetaDataName); var date = DateTime.UtcNow.Subtract(_configuration.Time); var results = col.Query() .Where(x => x.Status == QueueStatuses.Processing) .Where(x => x.HeartBeat.HasValue && x.HeartBeat.Value < date) .ToList(); var data = new List <MessageToReset <int> >(results.Count); var queue = db.Database.GetCollection <Schema.QueueTable>(_tableNameHelper.QueueName); foreach (var record in results) { if (record.HeartBeat.HasValue) { var queueRecord = queue.FindById(record.QueueId); if (queueRecord != null) { var headers = _serialization.InternalSerializer.ConvertBytesTo <IDictionary <string, object> >( queueRecord .Headers); var reset = new MessageToReset <int>(record.QueueId, record.HeartBeat.Value, new ReadOnlyDictionary <string, object>(headers)); data.Add(reset); } } } return(data); } }
/// <summary> /// Initializes a new instance of the <see cref="ResetHeartBeatCommand{T}"/> class. /// </summary> /// <param name="messageReset">The queue identifier.</param> public ResetHeartBeatCommand(MessageToReset <T> messageReset) { MessageReset = messageReset; }