Dostarczanie ściągania za pomocą protokołu HTTP

Ten artykuł opiera się na artykule Co to jest usługa Azure Event Grid? i w artykule Dotyczącym pojęć związanych z usługą Event Grid, aby podać podstawowe informacje przed rozpoczęciem korzystania z dostarczania ściągania usługi Event Grid za pośrednictwem protokołu HTTP. Obejmuje ona podstawowe pojęcia, modele zasobów i obsługiwane tryby dostarczania komunikatów. Na końcu tego dokumentu znajdziesz przydatne linki do artykułów, które prowadzą Cię do korzystania z usługi Event Grid i artykułów, które oferują szczegółowe informacje koncepcyjne.

Uwaga

Ten dokument ułatwia rozpoczęcie pracy z funkcjami usługi Event Grid korzystającymi z protokołu HTTP. Ten artykuł jest odpowiedni dla użytkowników, którzy muszą integrować aplikacje w chmurze. Jeśli chcesz przekazać dane urządzenia IoT, zobacz Omówienie funkcji brokera MQTT w usłudze Azure Event Grid.

CloudEvents

Tematy dotyczące przestrzeni nazw usługi Event Grid akceptują zdarzenia zgodne z otwartą standardową specyfikacją CloudEvents CloudEvents 1.0 przy użyciu powiązania protokołu HTTP z formatem JSON.

Aby uzyskać więcej informacji, zapoznaj się z pojęciami cloudEvents.

CloudEvents con tryb namiotu s

Specyfikacja CloudEvents definiuje trzy con tryb namiotu s, których można użyć: binarnych, ustrukturyzowanych i wsadowych.

Ważne

Z dowolnym con tryb namiotu można wymieniać tekst (JSON, tekst/*itp.) lub dane zdarzenia zakodowane binarnie. Plik binarny con tryb namiotu nie jest używany wyłącznie do wysyłania danych binarnych.

Con tryb namiotu s nie dotyczy kodowania używanego, binarnego lub tekstowego, ale o tym, jak są opisywane i wymieniane dane zdarzenia oraz jego metadane. Struktura con tryb namiotu używa pojedynczej struktury, na przykład obiektu JSON, gdzie zarówno atrybuty kontekstu, jak i dane zdarzenia są razem w ładunku HTTP. Binarny con tryb namiotu oddziela atrybuty kontekstu, które są mapowane na nagłówki HTTP i dane zdarzenia, które są ładunkiem HTTP zakodowanym zgodnie z wartością typu nośnika w Content-Typepliku .

Aby uzyskać więcej informacji, zapoznaj się z usługą CloudEvents con tryb namiotu s.

Komunikaty i zdarzenia

Rozwiązanie CloudEvent zwykle przenosi dane zdarzenia ogłaszające wystąpienie w systemie, czyli zmianę stanu systemu. Można jednak przekazać wszelkiego rodzaju dane podczas korzystania z rozwiązania CloudEvents. Na przykład możesz użyć formatu wymiany CloudEvents, aby wysłać komunikat polecenia, aby zażądać akcji do aplikacji podrzędnej. Innym przykładem jest routing komunikatów z brokera MQTT usługi Event Grid do tematu. W tym scenariuszu rozsyłasz komunikat MQTT opakowany w kopertę CloudEvents.

Dostarczanie ściągnięcia

Dzięki dostarczaniu ściągnięcia aplikacja łączy się z usługą Event Grid, aby odczytywać rozwiązania CloudEvents przy użyciu semantyki przypominającej kolejkę.

Dostarczanie ściągnięcia oferuje następujące korzyści z użycia zdarzeń:

  • Korzystaj ze zdarzeń we własnym tempie, na dużą skalę lub w tempie ruchu przychodzącego obsługiwanego przez aplikację.

  • Korzystaj z zdarzeń w wybranym czasie. Na przykład, biorąc pod uwagę wymagania biznesowe, komunikaty są przetwarzane w nocy.

  • Korzystaj ze zdarzeń za pośrednictwem łącza prywatnego, aby dane korzystały z prywatnej przestrzeni ADRESÓW IP.

Uwaga

  • Przestrzenie nazw zapewniają prostszy model zasobów z pojedynczym rodzajem tematu. Obecnie usługa Event Grid obsługuje publikowanie własnych zdarzeń aplikacji za pomocą tematów przestrzeni nazw. Nie można używać zdarzeń z usług platformy Azure lub systemów SaaS partnerów przy użyciu tematów przestrzeni nazw. Nie można również tworzyć tematów systemowych, tematów domeny ani tematów partnerów w przestrzeni nazw.
  • Tematy przestrzeni nazw obsługują format JSON cloudEvents.

Subskrypcje zdarzeń kolejki

Podczas odbierania zdarzeń lub używania operacji, które zarządzają stanem zdarzenia, aplikacja określa punkt końcowy HTTP przestrzeni nazw, nazwę tematu i nazwę subskrypcji zdarzeń kolejki . Subskrypcja zdarzeń kolejki ma ustawioną wartość "queue" (kolejka). Subskrypcje zdarzeń kolejki służą do korzystania ze zdarzeń przy użyciu interfejsu API dostarczania ściągnięcia. Aby uzyskać więcej informacji na temat tworzenia tych zasobów, zobacz tworzenie przestrzeni nazw, tematów i subskrypcji zdarzeń.

Subskrypcja zdarzeń służy do definiowania kryteriów filtrowania zdarzeń i w ten sposób skutecznie definiujesz zestaw zdarzeń, które są dostępne do użycia za pośrednictwem tej subskrypcji zdarzeń. Co najmniej jedna aplikacja subskrybenta (odbiorcy) może łączyć się z tym samym punktem końcowym przestrzeni nazw i używać tego samego tematu i subskrypcji zdarzeń.

Ogólny diagram wydawcy i odbiorcy przy użyciu subskrypcji zdarzeń. Użytkownik korzysta z dostarczania ściągania.

Operacje dostarczania ściągania

Aplikacja używa następujących operacji podczas pracy z dostarczaniem ściągania.

  • Operacja odbierania służy do odczytywania co najmniej jednego zdarzenia przy użyciu jednego żądania do usługi Event Grid. Domyślnie broker czeka do 60 sekund, aż zdarzenia staną się dostępne. Na przykład zdarzenia stają się dostępne do dostarczenia po ich opublikowaniu. Pomyślne żądanie odbierania zwraca zero lub więcej zdarzeń. Jeśli zdarzenia są dostępne, zwraca jak najwięcej dostępnych zdarzeń do żądanej liczby zdarzeń. Usługa Event Grid zwraca również token blokady dla każdego odczytu zdarzenia.
  • Token blokady to rodzaj uchwytu, który identyfikuje zdarzenie, którego można użyć do kontrolowania jego stanu.
  • Gdy aplikacja odbiorcy odbiera zdarzenie i przetwarza je, potwierdza to zdarzenie. Ta operacja instruuje usługę Event Grid, aby usunąć zdarzenie, więc nie zostanie on ponownie dostarczony do innego klienta. Aplikacja konsumenta potwierdza co najmniej jeden token z pojedynczym żądaniem, określając tokeny blokady przed wygaśnięciem.

W niektórych innych przypadkach aplikacja konsumenta może chcieć zwolnić lub odrzucić zdarzenia.

  • Aplikacja konsumenta zwalnia odebrane zdarzenie, aby zasygnalizować, że usługa Event Grid nie jest gotowa do przetworzenia tego zdarzenia i udostępnić je do ponownego dostarczenia. Robi to przez wywołanie operacji wydania z tokenami blokady identyfikującymi zdarzenia, które mają zostać zwrócone z powrotem do usługi Event Grid. Aplikacja może kontrolować, czy zdarzenie powinno być zwalniane natychmiast lub czy powinno być używane opóźnienie przed udostępnieniem zdarzenia do ponownego dostarczenia.

  • Możesz zdecydować się na odrzucenie zdarzenia, jeśli istnieje warunek, prawdopodobnie trwały, który uniemożliwia aplikacji konsumenckiej przetwarzanie zdarzenia. Na przykład źle sformułowany komunikat można odrzucić, ponieważ nie można go pomyślnie przeanalizować. Odrzucone zdarzenia są nieaktywne, jeśli jest dostępne miejsce docelowe utraconych komunikatów. W przeciwnym razie są one porzucane.

Zakres, w którym są uruchamiane operacje dostarczania ściągania

W przypadku wywoływania operacji odbierania, potwierdzania, wydawania, odrzucania lub odnawiania blokady te akcje są wykonywane w kontekście subskrypcji zdarzeń. Jeśli na przykład potwierdzisz zdarzenie, to zdarzenie nie jest już dostępne za pośrednictwem subskrypcji zdarzeń używanej podczas wywoływania akcji potwierdzenia . Inna subskrypcja zdarzeń nadal może mieć dostępne "to samo" zdarzenie. Dzieje się tak, ponieważ subskrypcja zdarzeń pobiera kopię opublikowanych zdarzeń. Te kopie zdarzeń są skutecznie różne od siebie w ramach subskrypcji zdarzeń. Każde zdarzenie ma swój własny stan niezależnie od innych zdarzeń.

Kształt danych podczas odbierania zdarzeń przy użyciu dostarczania ściągnięcia

Podczas dostarczania zdarzeń przy użyciu dostarczania ściągania usługa Event Grid zawiera tablicę obiektów, które z kolei zawierają obiekty event i brokerProperties . Wartość właściwości zdarzenia to CloudEvent dostarczona ze strukturą con tryb namiotu. Obiekt brokerProperties zawiera token blokady skojarzony z dostarczonym rozwiązaniem CloudEvent. Następujący obiekt json to przykładowa odpowiedź z operacji odbierania, która zwraca dwa zdarzenia:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

Dostarczanie wypychania i ściągania

Usługa Event Grid obsługuje dostarczanie zdarzeń wypychania i ściągania przy użyciu protokołu HTTP. W przypadku dostarczania wypychanego należy zdefiniować miejsce docelowe w subskrypcji zdarzeń, element webhook lub usługę platformy Azure, do której usługa Event Grid wysyła zdarzenia. W przypadku dostarczania ściągnięcia aplikacje subskrybentów łączą się z usługą Event Grid w celu korzystania ze zdarzeń. Dostarczanie ściągania jest obsługiwane w przypadku tematów w przestrzeni nazw usługi Event Grid.

Ważne

Usługa Event Hubs jest obsługiwana jako miejsce docelowe dla subskrypcji w tematach przestrzeni nazw. W nadchodzących wersjach przestrzenie nazw usługi Event Grid będą obsługiwać wszystkie miejsca docelowe obecnie dostępne w usłudze Event Grid Basic wraz z dodatkowymi miejscami docelowymi.

Diagram wysokiego poziomu przedstawiający dostarczanie wypychane i dostarczanie ściągnięcia z rodzajem zaangażowanych zasobów.

Kiedy należy używać dostarczania wypychań a dostarczania ściągnięcia

Poniżej przedstawiono ogólne wskazówki ułatwiające podjęcie decyzji o tym, kiedy używać dostarczania ściągania lub wypychania.

Dostarczanie ściągnięcia

  • Potrzebujesz pełnej kontroli co do tego, kiedy odbierać zdarzenia. Na przykład aplikacja może nie być przez cały czas, nie wystarczająco stabilna lub przetwarzać dane w określonym czasie.
  • Potrzebna jest pełna kontrola nad zużyciem zdarzeń. Na przykład usługa podrzędna lub warstwa w aplikacji konsumenta ma problem uniemożliwiający przetwarzanie zdarzeń. W takim przypadku interfejs API dostarczania ściągnięcia umożliwia aplikacji konsumenta zwolnienie już odczytanego zdarzenia z powrotem do brokera, aby można było go dostarczyć później.
  • Chcesz użyć linków prywatnych podczas odbierania zdarzeń, co jest możliwe tylko w przypadku dostarczania ściągnięcia, a nie dostarczania wypychanych.
  • Nie masz możliwości uwidocznienia punktu końcowego i używania dostarczania wypychanego, ale możesz nawiązać połączenie z usługą Event Grid w celu korzystania ze zdarzeń.

Dostarczanie wypychane

  • Chcesz uniknąć ciągłego sondowania, aby określić, czy nastąpiła zmiana stanu systemu. Zamiast tego używasz usługi Event Grid do wysyłania zdarzeń do Ciebie w momencie wystąpienia zmian stanu.
  • Masz aplikację, która nie może wykonywać wywołań wychodzących. Na przykład Organizacja może być zaniepokojona eksfiltracją danych. Jednak aplikacja może odbierać zdarzenia za pośrednictwem publicznego punktu końcowego.

Następne kroki

Poniższe artykuły zawierają informacje na temat korzystania z usługi Event Grid lub dostarczania dodatkowych informacji na temat pojęć.