private T GetPayload <T>(ServiceBusReceivedMessage serviceBusReceivedMessage, ServiceBusSubscriberReceiveMessageTypes receiveMessageType, CancellationToken cancellationToken = default) where T : class { if (receiveMessageType == ServiceBusSubscriberReceiveMessageTypes.FullMessage) { return(serviceBusReceivedMessage as T); } try { var message = JsonConvert.DeserializeObject(serviceBusReceivedMessage.Body.ToString(), typeof(ServiceBusMessage <T>)); return(receiveMessageType == ServiceBusSubscriberReceiveMessageTypes.Message ? (T)message : ((ServiceBusMessage <T>)message)?.Payload); } catch (Exception ex) { _logger.LogError(ex, "Service Bus received message get payload failure"); throw new ServiceBusSubscriberOperationException("Service Bus received message get payload failure", ex); } }
private object GetPayload(ServiceBusReceivedMessage serviceBusReceivedMessage, ServiceBusSubscriberReceiveMessageTypes receiveMessageType, CancellationToken cancellationToken = default) { if (receiveMessageType == ServiceBusSubscriberReceiveMessageTypes.FullMessage) { return(serviceBusReceivedMessage); } if (!serviceBusReceivedMessage.ApplicationProperties.TryGetValue(nameof(Metadata.EventName), out var eventNameAsObject) || !serviceBusReceivedMessage.ApplicationProperties.TryGetValue(nameof(Metadata.Version), out var versionAsObject)) { return(GetPayload <object>(serviceBusReceivedMessage, receiveMessageType, cancellationToken)); } var eventName = (string)eventNameAsObject; var version = (int)versionAsObject; if (!_serviceBusSubscriberConfiguration.DeserializationDictionary.TryGetValue((version, eventName), out var payloadType) || payloadType == null) { return(GetPayload <object>(serviceBusReceivedMessage, receiveMessageType, cancellationToken)); } try { var message = JsonConvert.DeserializeObject(serviceBusReceivedMessage.Body.ToString(), payloadType); return(receiveMessageType == ServiceBusSubscriberReceiveMessageTypes.Message ? message : message.GetType().GetProperty(nameof(ServiceBusMessage <object> .Payload)).GetValue(message, null)); } catch (Exception ex) { _logger.LogError(ex, "Service Bus received message get payload failure"); throw new ServiceBusSubscriberOperationException("Service Bus received message get payload failure", ex); } }