public async Task Invoke(IMessage message) { try { if (this.closed) { throw new InvalidOperationException($"Endpoint executor for endpoint {this.Endpoint} is closed."); } using (MetricsV0.StoreLatency(this.Endpoint.Id)) { long offset = await this.messageStore.Add(this.Endpoint.Id, message); this.checkpointer.Propose(message); Events.AddMessageSuccess(this, offset); } this.hasMessagesInQueue.Set(); MetricsV0.StoredCountIncrement(this.Endpoint.Id); } catch (Exception ex) { Events.AddMessageFailure(this, ex); throw; } }
public async Task Invoke(IMessage message, uint priority, uint timeToLiveSecs) { try { if (this.closed) { throw new InvalidOperationException($"Endpoint executor for endpoint {this.Endpoint} is closed."); } using (MetricsV0.StoreLatency(this.Endpoint.Id)) { // Get the checkpointer corresponding to the queue for this priority ImmutableDictionary <uint, EndpointExecutorFsm> snapshot = this.prioritiesToFsms; ICheckpointer checkpointer = snapshot[priority].Checkpointer; IMessage storedMessage = await this.messageStore.Add(GetMessageQueueId(this.Endpoint.Id, priority), message, timeToLiveSecs); checkpointer.Propose(storedMessage); Events.AddMessageSuccess(this, storedMessage.Offset, priority, timeToLiveSecs); } this.hasMessagesInQueue.Set(); MetricsV0.StoredCountIncrement(this.Endpoint.Id, priority); } catch (Exception ex) { Routing.UserMetricLogger.LogIngressFailureMetric(1, this.Endpoint.IotHubName, message, "storage_failure"); Events.AddMessageFailure(this, ex); throw; } }
public async Task Invoke(IMessage message, uint priority, uint timeToLiveSecs) { // TODO: 6099894 - Update StoringAsyncEndpointExecutor message enqueue logic to be aware of priorities try { if (this.closed) { throw new InvalidOperationException($"Endpoint executor for endpoint {this.Endpoint} is closed."); } using (MetricsV0.StoreLatency(this.Endpoint.Id)) { IMessage storedMessage = await this.messageStore.Add(this.Endpoint.Id, message); this.checkpointer.Propose(storedMessage); Events.AddMessageSuccess(this, storedMessage.Offset); } this.hasMessagesInQueue.Set(); MetricsV0.StoredCountIncrement(this.Endpoint.Id); } catch (Exception ex) { Events.AddMessageFailure(this, ex); throw; } }