public async Task <WirehomeDictionary> PublishRequestAsync(WirehomeDictionary message, TimeSpan timeout) { if (message == null) { throw new ArgumentNullException(nameof(message)); } var request = new MessageBusMessage { Message = message }; var responseSubscriber = new MessageBusResponseSubscriber(); try { _responseSubscribers.TryAdd(request.Uid, responseSubscriber); Publish(request); using (var timeoutCts = new CancellationTokenSource(timeout)) { await Task.Run(() => responseSubscriber.Task, timeoutCts.Token).ConfigureAwait(false); return(responseSubscriber.Task.Result.Message); } } finally { _responseSubscribers.TryRemove(request.Uid, out _); } }
public void SetResponse(MessageBusMessage responseMessage) { if (responseMessage == null) { throw new ArgumentNullException(nameof(responseMessage)); } _taskCompletionSource.TrySetResult(responseMessage); }
public void Publish(MessageBusMessage message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } message.EnqueuedTimestamp = DateTime.UtcNow; _messageQueue.Add(message); _inboundCounter.Increment(); }
public void EnqueueMessage(MessageBusMessage message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } if (!MessageBusFilterComparer.IsMatch(message.Message, Filter)) { return; } _messageQueue.Enqueue(message); }
public void Publish(WirehomeDictionary message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } var busMessage = new MessageBusMessage { Message = message }; Publish(busMessage); }
public void Publish(IDictionary <object, object> message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } var busMessage = new MessageBusMessage { Message = message }; Publish(busMessage); }
public async Task <WirehomeDictionary> PublishRequestAsync(WirehomeDictionary message, TimeSpan timeout) { if (message == null) { throw new ArgumentNullException(nameof(message)); } var request = new MessageBusMessage { Message = message }; string requestCorrelationUid = null; try { var responseSubscriber = new MessageBusResponseSubscriber(); if (message.TryGetValue(MessageBusMessagePropertyName.CorrelationUid, out var buffer)) { requestCorrelationUid = Convert.ToString(buffer, CultureInfo.InvariantCulture); } else { requestCorrelationUid = Guid.NewGuid().ToString("D"); } _responseSubscribers.TryAdd(requestCorrelationUid, responseSubscriber); Publish(request); using (var timeoutCts = new CancellationTokenSource(timeout)) { var responseMessage = await Task.Run(() => responseSubscriber.Task, timeoutCts.Token).ConfigureAwait(false); return(responseMessage.Message); } } finally { if (requestCorrelationUid != null) { lock (_responseSubscribers) { _responseSubscribers.Remove(requestCorrelationUid); } } } }
public void PublishResponse(MessageBusMessage request, WirehomeDictionary responseMessage) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (responseMessage == null) { throw new ArgumentNullException(nameof(responseMessage)); } var response = new MessageBusMessage { ResponseUid = request.Uid, Message = responseMessage }; Publish(response); }
public void PublishResponse(WirehomeDictionary request, WirehomeDictionary responseMessage) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (responseMessage == null) { throw new ArgumentNullException(nameof(responseMessage)); } responseMessage[MessageBusMessagePropertyName.CorrelationUid] = request[MessageBusMessagePropertyName.CorrelationUid]; var response = new MessageBusMessage { Message = responseMessage }; Publish(response); }
public void Add(MessageBusMessage message) { if (message is null) { throw new global::System.ArgumentNullException(nameof(message)); } if (!_isEnabled) { return; } lock (_messages) { while (_messages.Count >= _maxMessagesCount) { _messages.RemoveLast(); } // TODO: Create copy! _messages.AddFirst(message); } }