Наш back-end собирает необработанные данные и перенаправляет их в очередь Azure Storage Queue. Мы хотели бы сделать две вещи с каждой очереди сообщений:Несколько функций Azure WebJob в сообщении с одной очередью?
- Вход/архивировать
- Разобрать и отправить разобранную результат в новой очереди
Чтобы держит вещи маленькие и четкие , мы хотели бы иметь две WebJob функции, указывающие на ту же очередь:
public static void ArchiveRawData([QueueTrigger("raw")] RawData data, [Blob("{Ticks}.dat")] out string raw)
{
raw = data.Data;
}
public static void ParseRawData([QueueTrigger("raw")] RawData data, [Queue("result")] out Parsed parsedData
{
var parsed = Parser.Parse(data.Data);
parsedData = parsed;
}
Но это не работает: Либо ArchiveRawData, либо ParseRawData получает сообщение, , но не другое.
Есть ли вариант где-нибудь, что сделало бы описанный выше сценарий? Кажется, что сообщение теперь автоматически отменяется после завершения первой функции (независимо от того, какой из них). Но я думаю, что SDK WebJobs может обнаружить, что есть несколько функций с одним и тем же QueueTrigger, и это может привести к деактивации сообщения только после завершения всех функций.
Для того, чтобы обойти эту проблему, мы в настоящее время есть два выхода в одной функции:
public static void ParseRawData([QueueTrigger("raw")] RawData data, [Queue("result")] out Parsed parsedData, [Blob("{Ticks}.dat")] out string raw)
{
var parsed = Parser.Parse(data.Data);
parsedData = parsed;
raw = data.Data;
}
Но, как я уже сказал, мы хотели бы, чтобы держать вещи маленький и простой, поэтому было бы здорово, если бы мы могли использование отдельный функция.