Skip to content

Instantly share code, notes, and snippets.

@dzas
Last active August 7, 2020 20:34
Show Gist options
  • Save dzas/465b12f9e1fba177c487a3e4db8dbe00 to your computer and use it in GitHub Desktop.
Save dzas/465b12f9e1fba177c487a3e4db8dbe00 to your computer and use it in GitHub Desktop.
public Task DispatchReceiptAsync(byte[] body, MessageProperties properties, MessageReceivedInfo info)
{
try
{
using (_logger.BeginScope("{ConsumerTag}", info.ConsumerTag))
using (_logger.BeginScope("{DeliveryTag}", info.DeliverTag))
using (var scope = _provider.CreateScope())
{
if (body != null)
{
var serializer = scope.ServiceProvider.GetRequiredService<ISerializer>();
if (serializer.BytesToMessage(typeof(Receipt), body) is Receipt message)
{
var consumer = scope.ServiceProvider.GetRequiredService<IConsumeAsync<Receipt>>();
try
{
return consumer.ConsumeAsync(message);
}
catch (Exception e)
{
_logger.LogError(e, Messages.ReceiptProcessingError, message);
}
}
else
{
_logger.LogWarning(Messages.ReceivedInvalidReceiptMessage);
}
}
else
{
_logger.LogWarning(Messages.ReceivedEmptyReceiptMessage);
}
}
}
catch (Exception e)
{
_logger.LogError(e,
Messages.CouldNotDeserializeReceiptMessage,
Regex.Escape(System.Text.Encoding.Default.GetString(body ?? new byte[] { })));
}
return Task.CompletedTask;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment