У меня есть сомнения, и перед тем, как приступить к программированию решения, я хотел бы знать, правильно ли оно.
Мы используем долговременные объекты и хотим удалить записи, сохраненные в хранилище таблицы «history» ( и я не хочу удалять таблицу из Storage Explorer, это более жесткий выбор). Итак, я боюсь, потому что через некоторое время у меня будет много пустых записей и, возможно, производительность не будет лучше.
Мы испробовали несколько решений, но все одинаковы: сигнал расписания удаления сущность
Entity.Current.DeleteState();
или даже PowerShell для удаления всех сущностей.
function DeleteEntities
{
param (
[string[]]$keys
)
foreach ($key in $keys) {
$signalEntityUri = "$baseUrl/runtime/webhooks/durabletask/entities/VoiceCallEntity/$key`?op=Delete&code=$code"
Write-Output $signalEntityUri
Invoke-WebRequest -Uri $signalEntityUri -Method POST
}
}
function GetEntities
{
param (
[string]$continuationToken
)
$baseUrl = "your_base_url_goes_here"
$code = "your_code_goes_here"
$listEntitiesUri = "$baseUrl/runtime/webhooks/durabletask/entities/VoiceCallEntity?code=$code"
$response = Invoke-WebRequest -Uri $listEntitiesUri -Method GET -Headers @{'x-ms-continuation-token' = $continuationToken}
$body = $response | ConvertFrom-Json
$continuationToken = $response.Headers['x-ms-continuation-token']
$keys = $body | select -ExpandProperty entityId | select -ExpandProperty key | where { $_ -ne '' }
return @{ 'continuationToken' = $continuationToken; 'keys' = $keys }
}
$result = GetEntities('')
DeleteEntities($result.keys)
while($result.continuationToken -ne '')
{
$result = GetEntities($result.continuationToken)
DeleteEntities($result.keys)
}
Я не нашел способа удалить всю запись через API, поэтому мое последнее намерение будет чтобы создать функцию azure с триггером таймера и с помощью хранилища таблиц API, определенно удалите записи в этой таблице с нулевым состоянием.
Не упущено ли что-нибудь более простое для достижения этого результата?
Большое спасибо.