public async Task <Unit> Handle(SendUpdateUserConnectionListMessageCommand messageCommand, CancellationToken cancellationToken)
        {
            foreach (var record in messageCommand.DynamoEvent.Records.Where(r => _validOperationTypes.Contains(r.EventName)))
            {
                var recordData = record.EventName == OperationType.MODIFY
                    ? record.Dynamodb.NewImage
                    : record.Dynamodb.OldImage;

                await MapFromStreamRecord(recordData)
                .Map(mapping => new UpdateUserConnectionMappingQueueMessage
                {
                    IsDeletion            = record.EventName == OperationType.REMOVE,
                    UserConnectionMapping = mapping
                })
                .IfSomeAsync(async message => await _sqsClient.SendMessage(message));
            }

            return(Unit.Value);
        }
예제 #2
0
 /// <summary>
 /// Send message with a visibility delay.
 /// </summary>
 /// <param name="messageBody">Message body.</param>
 /// <param name="delay">Time to wait until the message becomes visible.</param>
 public void SendMessage(string messageBody, TimeSpan delay)
 {
     _client.SendMessage(QueueName, messageBody, delay);
 }