public ProviderData(IAzureServiceBusInstance busInstance, string lockToken, long sequenceNumber, string markerMessageLockToken) { this.busInstance = busInstance; LockToken = lockToken; this.sequenceNumber = sequenceNumber; this.markerMessageLockToken = markerMessageLockToken; }
private IncomingMessage BuildMessage(Message azureMessage, IList <Message> deferredMessages, IAzureServiceBusInstance busInstance) { Message markerMessage = null; if (azureMessage.IsDeferredMarkerMessage()) { markerMessage = azureMessage; azureMessage = deferredMessages.Single( message => message.SystemProperties.SequenceNumber == markerMessage.DeferredMessageSequenceNumber()); } // TODO Pluggable serialiser var messageTypeNamesString = azureMessage.UserProperties[TransportHeaders.MessageTypeNames].ToString(); // TODO Allocations review var messageTypeNames = messageTypeNamesString.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var bodyJson = Encoding.UTF8.GetString(azureMessage.Body); var bodyType = typeMap.GetTypeByName(messageTypeNames[0]); var body = JsonConvert.DeserializeObject(bodyJson, bodyType); var headers = azureMessage .UserProperties .Where(property => !TransportHeaders.IsTransportHeader(property.Key)) .Select(BuildHeader); return(new IncomingMessage( id: azureMessage.MessageId, body: body, messageTypeNames: messageTypeNames, dequeuedUtc: DateTime.UtcNow, dequeuedCount: azureMessage.SystemProperties.DeliveryCount, lockExpiresUtc: azureMessage.SystemProperties.LockedUntilUtc, headers: new HeaderCollection(headers), providerData: new ProviderData( busInstance, azureMessage.SystemProperties.LockToken, azureMessage.SystemProperties.SequenceNumber, markerMessage?.SystemProperties.LockToken))); }
private async Task <IList <Message> > FetchDeferredMessages(IList <Message> originalMessages, IAzureServiceBusInstance busInstance) { var sequenceNumbers = from originalMessage in originalMessages where originalMessage.IsDeferredMarkerMessage() select originalMessage.DeferredMessageSequenceNumber(); return(await busInstance .ReceiveDeferredMessages(sequenceNumbers) .ConfigureAwait(false)); }
public NoFailoverStrategy(IEnumerable <IAzureServiceBusInstance> busInstances) { busInstance = busInstances.First(); }