Azure StorageJueue에서 항목을 제거한 다음 Azure 테이블에 저장하는 다음 스크립트와 같이 Azure WebJob을 만듭니다. 이 프로세스는 1 ~ 2 초 안에 완료되지만 1 분에 몇 번만 실행됩니다 (간혹 약 10 분 후에 중지됨). 전반적으로 잘 작동하지 않습니다.WebJob을 연속 작성하는 방법은?
무엇이 누락 되었습니까? 아마도 방아쇠 작업과 연속 작업을 혼합하고 있지만 적절한 샘플을 찾기가 어렵습니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("started at {0}", DateTime.Now.ToString("s"));
// Continuous job should have infinite loop.
while(true){
var host = new JobHost();
host.RunAndBlock();
}
}
public static void ProcessQueueMessage([QueueInput("blogqueue")] string json)
{
var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings ["StorageConnectionString"].ConnectionString);
var tableClient = storageAccount.CreateCloudTableClient();
// Store it to Azure Table Storage
// omitted...
Console.WriteLine("Received JSON: {0}", json);
}
감사합니다, 나는 (ProcessQueueMessage)는 트리거 모드에서 바인더 제본 방법을 실행할 수 않는 질문이? 내 말은, "대기열 항목이 도착하면 연속적으로 트리거 됨"또는 "지속적으로 Azure 자신의 WebJob 스케줄러 기간으로 새 항목을 확인"을 의미합니까? 내 Azure 저장소 탐색기는 프로세스가 성공 했음에도 큐에서 대기열에서 제외 된 수가 증가하거나 증가했지만 대기열에서 제거되지 않았 음을 보여줍니다. Main method와 binded method는 명확한 관계가 없으므로 그 과정을 추측하기는 어렵습니다. – Youngjae
"RunAndBlock"시나리오에서 위의 작업을 사용하면 작업이 연속적이어야합니다. 즉, 프로세스가 항상 실행되며 주기적으로 (수 초마다) 지정된 Azure 큐를 폴링합니다. –
WebJob이 실행 빈도가 낮기 때문에 (약 1 ~ 2 초 정도?) WebJob을 WorkerRole로 변경했습니다. 나는 그것이 높은 (0 ~ 10ms 정도) 주파수를 가질 것으로 예상했다. WebJob은 0 ~ 10ms의 실행 빈도를 실행할 수 있습니까? – Youngjae