2016-06-24 5 views
0

현재 azure scheduler에 의해 2 시간마다 정적으로 실행되는 azure webjob이 있습니다. 그러나 웹 사이트의 각 사용자 구성을 기반으로 스케줄 시간을 동적으로 설정해야합니다. 스케줄 실행 시간을 제외한 모든 사용자 새로운 webjobs.s에 갈 수 없다. 매개 변수 cron 값으로 푸른 대기열을 들여다 보았지만 위의 경우를 구현하는 방법을 알지 못한다.다른 사용자를위한 azure webjob schedule timing 사용자 정의

다른 사용자를 위해 azure webjob schedule timing을 사용자 정의하는 방법을 설명하십시오.

+0

가 좀 더 세부 시나리오를 설명 할 수 있습니까? –

+0

예 우리가하려고하는 것에 대한 더 많은 정보가 필요합니다. 몇 가지 접근법이 있습니다. – Thomas

답변

0

1 분 단위로 세분화되어 있고 (항상 사이트를 항상 켜기로 설정 한) 일정이 잡힌 Webjob 대신 WebJobs SDK Extension TimerTrigger를 사용합니다.

그런 다음 당신은 다음을 수행 할 수

  1. 이는 TimerTrigger 설정을 다시
  2. 실행해야 할 때 코드가 마지막으로 실행 사용자와 설정에 때 추적 곳 테이블 또는 데이터 저장 되세요을 그 # 1에서 데이터 저장소를 검사하여 매 시간마다 실행해야하는지 확인한 다음 대기열에 메시지를 던지고 반환합니다.
  3. 타이머 트리거가 메시지를 던진 큐를 수신하는 다른 기능이 있습니다. QueueTrigger를 사용하여 현재 처리중인 작업을 수행하십시오.

사용자가 자신의 일정을 잡고 해당 일정에 의해 트리거되는 코드를 허용해야합니다.

업데이트 : 여기 는 타이머 및 대기열을 사용하여 생산자/소비자 모델의 간단한 예 트리거된다

using Microsoft.Azure.WebJobs; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ProducerConsumer 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var config = new JobHostConfiguration(); 

     config.UseDevelopmentSettings(); 
     config.UseTimers(); 

     var host = new JobHost(config); 
     host.RunAndBlock(); 
    } 
} 

public static class Functions 
{ 
    public static int counter = 0; 

    // Create a new message on the "orders" queue every 10 seconds 
    public static void Producer(
     [TimerTrigger("00:00:10", RunOnStartup=true)] TimerInfo timer, 
     [Queue("orders")] out string messageCount, 
     TextWriter log) 
    { 
     messageCount = "message" + counter++; 

     log.WriteLine("messsage: " + messageCount); 
    } 

    // Watch the "orders" queue for messages, and when one is found save it to blob storage 
    public static void Consumer(
     [QueueTrigger("orders")] string message, 
     [Blob("orders/order.txt")] out string order, 
     TextWriter log) 
    { 
     order = message; 

     log.WriteLine("Received " + message); 
    } 
} 

}

+0

감사합니다. 이것은 내가 필요로하는 것입니다. timertrigger 및 대기열 트리거에 대한 추가 정보가 있으면 좋은 부가가치가 될 것입니다. idea.it이 내 경우에 효과가있다. – ManirajSS

+0

타이머 및 대기열 트리거 샘플을 포함하도록 답변을 업데이트했습니다. 또한 4 월에 대기열과 다른 트리거를 다루는 실험실에서 손을 만들었으며 여기에 넣을 수있는 것보다 더 많은 정보를 얻을 것입니다. https://github.com/JasonHaley/BostonAzureBootcamp2016Material HOL-WebJobs/End/OrderProcessingJob이 코드이고 문서가 AzureBootCampWebJobsHOL.pdf입니다. –

0

Azure 스케줄러는 사용자에 따라 트리거 할 수 없습니다.

아마도 사용자 별 일정에 따라 실행해야하는 웹 작업을 계속 실행해야합니다. 테이블/구성/파일에 사용자 별 일정을 저장해야합니다. 해당 일정을 읽고 일정 조건이 충족되는 경우에만 작업을 실행하십시오. 또는 서비스 버스를 사용하여 웹 작업을 트리거 할 수 있습니다. 귀하의 서비스 버스는 사용자 일정에 따라 트리거해야합니다.