public IBatchContainer FromRabbitMQMessage(RabbitMQMessage message, long sequenceId) { var rabbitMqQueueBatch = _serializationManager.DeserializeFromByteArray <RabbitMQBatchContainer>(message.Body); rabbitMqQueueBatch.RealSequenceToken = new EventSequenceTokenV2(sequenceId); return(rabbitMqQueueBatch); }
/// <summary> /// Adds a new message to the queue. /// </summary> /// <param name="message">Message to be added to the queue.</param> public async Task AddQueueMessage(RabbitMQMessage message) { var startTime = DateTime.UtcNow; try { await Task.Run(() => { if (_isClosing) { throw new InvalidOperationException("Unable to add item, Queue close has been requested."); } if (!IsConnected) { Connect(); } _channel.BasicPublish(_configuration.Exchange, _configuration.RoutingKey, _props, message.Body); }); } catch (Exception exc) { ReportErrorAndRethrow(exc, "AddQueueMessage"); } finally { CheckAlertSlowAccess(startTime, "AddQueueMessage"); } }
public RabbitMQMessage ToRabbitMQMessage <T>(Guid streamGuid, string streamNamespace, IEnumerable <T> events, Dictionary <string, object> requestContext) { var rabbitMqQueueBatch = new RabbitMQBatchContainer(streamGuid, streamNamespace, events.Cast <object>().ToList(), requestContext); var rawBytes = _serializationManager.SerializeToByteArray(rabbitMqQueueBatch); var rabbitMqMessage = new RabbitMQMessage(rawBytes); return(rabbitMqMessage); }
/// <summary> /// Deletes a messages from the queue. /// </summary> /// <param name="message">A message to be deleted from the queue.</param> public async Task DeleteQueueMessage(RabbitMQMessage message) { var startTime = DateTime.UtcNow; try { await Task.Run(() => { _channel.BasicAck(message.DeliveryTag, false); }); } catch (Exception exc) { ReportErrorAndRethrow(exc, "DeleteMessage"); } finally { CheckAlertSlowAccess(startTime, "DeleteQueueMessage"); } }
public PendingDelivery(StreamSequenceToken token, RabbitMQMessage message) { this.Token = token; this.Message = message; }