Как очистить историю долговременных объектов с помощью удаления записи - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть сомнения, и перед тем, как приступить к программированию решения, я хотел бы знать, правильно ли оно.

Мы используем долговременные объекты и хотим удалить записи, сохраненные в хранилище таблицы «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, определенно удалите записи в этой таблице с нулевым состоянием.

Не упущено ли что-нибудь более простое для достижения этого результата?

Большое спасибо.

1 Ответ

1 голос
/ 27 апреля 2020

Решение здесь Как очистить историю долговременных сущностей с удалением записи Я ошибся и не знал, что вы можете очистить историю долговременных сущностей, и единственное отличие состоит в том, что {instanceId} в формате @ entityName@entityKey.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...