как перехватить подстроку в привязке queuetrigger и использовать ее для привязки входного блоба? - PullRequest
0 голосов

Как использовать тело моего сообщения очереди для привязки к моему входному BLOB-объекту?

Значение, которое мне нужно будет получить, будет myj.json.

У меня есть функция, запускаемая очередью:

[FunctionName ("OnSaveXmlBytesBlobTriggered")]
public static void Run (
    [QueueTrigger ("xmlinputqueue", Connection = "mystorconn")] JObject myQueueItem, 
    [Blob ("xmlinput/{jsonFileName}", FileAccess.Read, Connection = "mystorconn")] Stream blobInput,
    ILogger log) {

    log.LogInformation ($"C# Queue trigger function processed: {myQueueItem.subject}");
}

Вот образец myQueueItem:

{
    "topic": "/subscriptions/xxxxxxxxxxx/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/mystoraccount",
    "subject": "/blobServices/default/containers/xmlinput/blobs/myj.json",
    "eventType": "Microsoft.Storage.BlobCreated",
    "eventTime": "2019-05-20T18:58:28.7390111Z",
    "id": "xxxxxxxxxxxxxxxx",
    "data": {
        "api": "PutBlockList",
        "clientRequestId": "xxxxxxxxxxxxxxxx",
        "requestId": "xxxxxxxxxxxxxxxx",
        "eTag": "0x8D6DD55254EBE75",
        "contentType": "application/json",
        "contentLength": 874636,
        "blobType": "BlockBlob",
        "url": "https://mystoraccount.blob.core.windows.net/xmlinput/myj.json",
        "sequencer": "00000000000000000000000000005FAC0000000000614963",
        "storageDiagnostics": {
            "batchId": "xxxxxxxxxxxxxxxx"
        }
    },
    "dataVersion": "",
    "metadataVersion": "1"
}

Как сделать строку внутри тела полезной нагрузки очереди, чтобы связать ее с моим входным BLOB-объектом?

1 Ответ

1 голос
/ 21 мая 2019

Вы захотите преобразовать JToken в строку, найти последнюю позицию косой черты и затем подстроковать все, что перед ней.

string url = myQueueItem["data"]["url"].ToString();
int pos = url.LastIndexOf("/") + 1;
Console.WriteLine(url.Substring(pos, url.Length - pos));

Вернет myj.json

...