5

Mam kolejkę Autobus wahadłowy w Azure i funkcję kolejka wyzwalania Autobus wahadłowy. Kiedy po raz pierwszy publikuję funkcję i wysyłam komunikat do kolejki magistrali usług, ta funkcja jest wyzwalana i działa poprawnie.Azure funkcja wyzwalania kolejka autobus usługa nie podnosząc moją wiadomość w kolejce po uruchomieniu na chwilę

Ale gdybym zostawić ją w spokoju i nie wysyła żadnych wiadomości do kolejki powiedzmy ~ 1 godzinę, a następnie wysłać wiadomość funkcja nie zostanie uruchomiony. Muszę ręcznie uruchomić funkcję ponownie w portalu, naciskając "uruchom" lub muszę ponownie opublikować ją na platformie Azure.

Jak mogę utrzymać go w ruchu, więc nie trzeba go ponownie uruchomić co godzinę lub tak ??? Moja aplikacja może nie wysłać nową wiadomość do kolejki na kilka godzin lub nawet dni.

FYI - Czytam , że funkcja wyłącza się po 5 minutach, nie mogę korzystać z funkcji, jeśli tak jest i nie chcę używać wyzwalacza zegarowego, ponieważ wtedy uruchomiłbym funkcję więcej wtedy chciałbym, marnując pieniądze! Dobrze? Jeśli moim jedynym, najlepszym wyborem jest tutaj, aby uruchomić funkcję timera co 30 minut w ciągu dnia może po prostu muszę ssać go i zrobić to w ten sposób, ale wolałbym mieć przebieg funkcji, gdy wiadomość uderza kolejka wiadomości.

FYI2 - ostatecznie chcę ukryć wiadomość do określonej daty, kiedy najpierw popchnę ją do kolejki (np. Co staram się osiągnąć? Chcę wysłać wiadomość e-mail do zarejestrowanych uczniów po zakończeniu zajęć, a zajęcia mogą być zaplanowane na 1-30 dni wcześniej. Więc gdy klasa jest planowane nie chcę funkcja uruchomić dopiero po zakończeniu klasy, który może być 1 tydzień, 2 tygodnie 2 dni, 3 tygodnie 3 dni, etc po klasa jest wstępnie zaplanowane w mojej aplikacji.

Oto urywek z function.json

{ 
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0", 
"configurationSource": "attributes", 
"bindings": [ 
{ 
    "type": "serviceBusTrigger", 
    "connection": "Yogabandy2017_RootManageSharedAccessKey_SERVICEBUS", 
    "queueName": "yogabandy2017", 
    "accessRights": "listen", 
    "name": "myQueueItem" 
} 
], 
"disabled": false, 
"scriptFile": "..\\bin\\PostEventEmailFunction.dll", 
"entryPoint": "PostEventEmailFunction.Function1.Run" 
} 

Oto funkcja

public static class Function1 
{ 
    [FunctionName("Function1")] 
    public static void Run([ServiceBusTrigger("yogabandy2017", AccessRights.Listen, Connection = "Yogabandy2017_RootManageSharedAccessKey_SERVICEBUS")]string myQueueItem, TraceWriter log) 
    { 
     log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}"); 


    } 
} 

Zostałem poproszony aby umieścić mój plan płatności

enter image description here

+1

Dlaczego ciągle tworzysz nowe pytania bardzo podobne do poprzednich, nie odpowiadając na żadne odpowiedzi? – Mikhail

+0

cóż, mogą być podobne, ale nie są takie same! – user1186050

+0

Czy próbowałeś dać funkcji ZARZĄDZAĆ prawom w kolejce? ("accessRights": "manage") Wiem, że w przeszłości były pewne problemy, w których tylko uprawnienie do słuchania oszukało tę funkcję w myśleniu, że nie miało to nic wspólnego ... – Niels

Odpowiedz

2

Podejrzewam, że używasz scenariusza 1 i 2 poniżej - co spowoduje wyłączenie r okres braku aktywności.

  1. Aplikacja Funkcja na planu wolny/Shared App Służby. Funkcja Always On jest niedostępna, więc możesz uaktualnić swój plan.

  2. Aplikacja funkcji na Podstawowym/standardowym/Premium App Service Plan. Musisz upewnić się, że Always On jest sprawdzana w funkcji ustawiania

  3. Jeśli funkcja App stosując plan Pobór aplikacji, powinno to działać. To obudzi aplikację funkcji na każde żądanie. Dla Twojego scenariusza polecam to podejście, ponieważ w razie potrzeby wykorzystuje zasoby.

FYI1 - Jeśli pojawi się powyższy działa, nie trzeba będzie stoper.

plan Konsumpcja w ustawieniach aplikacji będzie wyglądać następująco: Azure Function Consumption Plan

+0

Cześć Jason. Na podstawie tego, co myślę, że skonfigurowałem na moim koncie Azure, wygląda na to, że utworzyłem płatność za ciebie. Próbuję znaleźć gdzie w ustawieniach aplikacji funkcji mogę sprawdzić zawsze włączony przycisk, ale nigdzie go nie widzę. Wiem, że mogę ustawić dzienny limit przydziału, który wyłącza aplikację, jeśli osiągnę ten limit, więc myślę, że mogę już być na planie konsumpcji !? – user1186050

+0

@ user1186050 - To dość trudne do znalezienia. W aplikacji Funkcji zaczniesz na karcie Przegląd, a zobaczysz nagłówek "Funkcje skonfigurowane". Pod nim kliknij "Ustawienia aplikacji". –

+0

Widzę, gdzie znajdują się zarówno ustawienia aplikacji, jak i ustawienia ustawień aplikacji funkcji i mogę klikać oba, po prostu nie widzę, gdzie w którejkolwiek z sekcji mogę zobaczyć wszystko, co pokazuje plan inny niż "zapłać za siebie" ", który jest planem, który skonfigurowałem dla mojego konta. Pytanie - czy płacenie za ciebie nie jest takie samo jak plan konsumpcji? – user1186050

1

Proszę sprawdzić swój plan serwisowy 1. Platformy wyposażony planu 2. Służba App 3. Zgodnie Cen Tier

Proszę podać nazwę aplikacji.

+0

Myślę, że znalazłem przyczynę! Użyta nazwa ciągu połączenia nie jest poprawna. – user1186050

+0

Cieszę się, że znalazłeś problem, jestem zaskoczony, że to zadziałało. Aby upewnić się, że ciąg połączenia jest poprawny, przejdź do magistrali usług i uzyskaj dostęp do zasad dostępu współużytkowanego. Możesz również użyć szablonów ARM, ale jest to inny temat. –