Jak przesyłać strumieniowo zdarzenia z PubNub do RabbitMQ
Tags: rabbitmq, messagebroker, pubnub, pubnubeventsactions
Published: 2024-03-07 15:33:39

Wprowadzenie do PubNub Events & Actions
---------------------------------------

PubNub Events & Actions to usługa PubNub, która umożliwia przechwytywanie określonych zdarzeń PubNub, takich jak publikowanie wiadomości i wysyłanie tych zdarzeń do ekosystemów innych firm. Obsługujemy wysyłanie zdarzeń PubNub do tych ekosystemów, które definiujemy jako akcje PubNub, takie jak łączenie webhooków lub bezpośrednie łączenie się z usługami w chmurze, takimi jak AWS, a wiele innych już wkrótce. Wszystko jest teraz konfigurowane w portalu administracyjnym bez konieczności kodowania.

  
Zapoznaj się z naszą [dokumentacja](https://www.pubnub.com/docs/serverless/events-and-actions/overview) aby uzyskać więcej informacji na temat rozpoczęcia pracy z PubNub Events & Actions. Możesz również sprawdzić nasze instrukcje dotyczące [konfigurowanie zdarzeń i akcji](https://www.pubnub.com/how-to/set-up-events-and-actions/)obejmującym podstawy tworzenia detektorów zdarzeń i akcji. Zapoznaj się również z instrukcjami dotyczącymi [filtrowania wiadomości przy użyciu JSONPath](https://www.pubnub.com/how-to/eanda-advanced-jsonpath-filter/) aby uzyskać więcej informacji na temat filtrowania zdarzeń.

Co to jest AMQP
---------------

[Advanced Message Queuing Protocol](https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) (AMQP) to protokół przesyłania wiadomości, który umożliwia aplikacjom klienckim komunikację z brokerami pośredniczącymi w przesyłaniu wiadomości za pośrednictwem skalowalnego i bezpiecznego interfejsu API. Stworzony w 2003 roku przez Johna O'Harę w [JPMorgan Chase](https://www.jpmorganchase.com/) w Londynie, AMQP ułatwia złożone rozwiązania w zakresie przesyłania wiadomości, w tym strumieniowe przesyłanie danych IoT i integrację usług zaplecza. W połowie 2005 r. w wysiłkach na rzecz utworzenia grupy użytkowników AMQP uczestniczyli tacy giganci IT jak [Cisco](https://www.cisco.com/), [Red Hat](https://www.redhat.com/)i [IONA Technologies](https://en.wikipedia.org/wiki/IONA_Technologies)podkreślając znaczenie wzorców publikowania/subskrybowania wiadomości.

### Brokerzy i ich rola

Brokerzy komunikatów odbierają wiadomości od [wydawców](https://www.rabbitmq.com/docs/publishers) (aplikacje, które je publikują, znane również jako producenci) i kierują je do [konsumentów](https://www.rabbitmq.com/docs/consumers) (aplikacji, które je przetwarzają).

Ponieważ jest to protokół sieciowy, wydawcy, konsumenci i broker mogą znajdować się na różnych komputerach.

Czym jest RabbitMQ
------------------

[RabbitMQ](https://www.pubnub.com/guides/rabbitmq/) to oprogramowanie open-source do kolejkowania wiadomości, znane jako [broker komunikatów](https://en.wikipedia.org/wiki/Message_broker) lub menedżer kolejek. RabbitMQ implementuje [AMQP 0.9.1](https://www.rabbitmq.com/tutorials/amqp-concepts) jako podstawę zestawu standardów kontrolujących cały proces kolejkowania wiadomości. AMQP 0.9.1 został opublikowany w listopadzie 2008 roku i jest to wersja używana w tym poradniku. Mówiąc najprościej, jest to oprogramowanie, w którym zdefiniowane są kolejki, do których aplikacje łączą się w celu przesłania wiadomości lub wiadomości.

Wiadomość może zawierać dowolny rodzaj informacji. Może na przykład zawierać informacje o procesie lub zadaniu, które powinno zostać uruchomione w innej aplikacji (która może nawet znajdować się na innym serwerze), lub może to być zwykła wiadomość tekstowa. Oprogramowanie zarządzające kolejką przechowuje wiadomości do momentu połączenia się z aplikacją odbierającą i usunięcia wiadomości z kolejki. Następnie aplikacja odbierająca przetworzy wiadomość.

Broker komunikatów działa jako pośrednik dla różnych usług (np. aplikacji internetowych). Mogą zmniejszyć obciążenie i czas dostarczania serwerów aplikacji internetowych poprzez delegowanie zadań, które normalnie zajmowałyby dużo czasu lub zasobów.

Tworzenie akcji RabbitMQ (AMQP) PubNub
--------------------------------------

Połączenie PubNub Events z RabbitMQ łączy przesyłanie wiadomości w czasie rzeczywistym z wydajnym kolejkowaniem wiadomości. Połączenie to umożliwia skalowalne przetwarzanie komunikatów i tworzenie zastrzeżonych danych, zapewniając pełną własność i kontrolę nad przepływem informacji.

### Wymagania wstępne

Upewnij się, że masz zarejestrowane konto PubNub i sprawdź [Cennik zdarzeń i akcji](https://www.pubnub.com/docs/general/resources/events-and-actions-pricing) aby zapoznać się ze szczegółami kosztów. Możesz także przejść do sekcji Events & Actions w portalu administracyjnym Pubnub i wybrać opcję "Upgrade", aby wyświetlić plany cenowe Events & Actions. W tym poradniku użyjemy konsoli PubNub Debug do publikowania wiadomości i sprawdzania ich przetwarzania w instancji RabbitMQ.

### Konfiguracja instancji RabbitMQ

Skonfigurujemy instancję RabbitMQ w AWS przy użyciu [Amazon MQ](https://aws.amazon.com/amazon-mq/)umożliwiając skonfigurowanie brokerów. Istnieje wiele różnych sposobów na uzyskanie brokera komunikatów, a dokładniej hostowanego brokera RabbitMQ, takich jak uruchomienie obrazu RabbitMQ w kontenerze Docker i hostowanie go za pomocą instancji EC2. Jednak w tym poradniku będziemy używać Amazon MQ.

Aby utworzyć instancję RabbitMQ w Amazon MQ, wykonaj poniższe kroki:

1.  Zaloguj się do [Amazon Web Services](https://aws.amazon.com/) (AWS)
    
2.  W pasku wyszukiwania wyszukaj "Amazon MQ" i kliknij usługę Amazon MQ.
    
3.  Kliknij przycisk "Create brokers", aby skonfigurować swojego brokera.
    
4.  W sekcji "Typy silników brokerów" wybierz "Rabbit MQ".
    
5.  Wybierz tryb wdrożenia (w zależności od przypadku użycia aplikacji)
    
6.  Wybierz "Single-instance broker", ponieważ nie potrzebujesz wielu stref dostępności.
    
7.  Wprowadź nazwę brokera, taką jak "rabbit-1".
    
8.  W sekcji RabbitMQ access wprowadź nazwę użytkownika i hasło do konsoli zarządzania RabbitMQ. Użyjesz ich później do zalogowania się do instancji RabbitMQ.
    
9.  Zapamiętaj swoją nazwę użytkownika i hasło, ponieważ nie będziesz mógł ich ponownie wyświetlić.
    
10.  Wybierz "Utwórz brokera". Utworzenie brokera zajmie około 20 minut.
    

Po wykonaniu tych kroków Amazon Web Portal powinien wyglądać następująco:

![](https://www.pubnub.com/cdn/3prze68gbwl1/47gUB6rXW9RRx1uIfNDyG/981a07e2000cf3ba053ac1658408ba83/Screenshot_2024-02-28_at_12.46.13_AM.png)

Broker wiadomości jest teraz skonfigurowany do rozpoczęcia przetwarzania zdarzeń PubNub. Teraz musimy tylko połączyć instancję RabbitMQ z PubNub Events & Actions.

### Konfiguracja odbiornika zdarzeń PubNub

Skonfigurujemy PubNub Event Listener, aby nasłuchiwał określonych zdarzeń PubNub, a nawet filtrował zdarzenia PubNub, jeśli zajdzie taka potrzeba. Nasłuchiwacze zdarzeń czekają na określony zestaw warunków, aby wywołać wstępnie zdefiniowaną akcję, taką jak wysyłanie wiadomości PubNub do instancji RabbitMQ. Więcej informacji na temat filtrowania zdarzeń PubNub można znaleźć w naszej [dokumentacja](https://www.pubnub.com/docs/serverless/events-and-actions/events#advanced-json-path).

Aby utworzyć Event Listener, wykonaj poniższe kroki:

1.  Zaloguj się do [Admin Portal](https://admin.pubnub.com/).
    
2.  Kliknij zakładkę Events & Actions po lewej stronie portalu.
    
3.  Postępuj zgodnie z wyskakującym oknem dialogowym i wybierz jedną z aplikacji
    
4.  Postępuj zgodnie z wyskakującym oknem dialogowym i wybierz zestaw klawiszy.
    
5.  Kliknij przycisk " + Event Listener"
    
6.  Wybierz źródło zdarzeń. W tym poradniku wybierzemy "Wiadomości".
    
7.  W sekcji "Producent zdarzeń" wybierz "Pub/Sub".
    
8.  W sekcji "Typ zdarzenia" wybierz "Wysłana wiadomość".
    
9.  Wybierz typ filtra dla tego poradnika: "Bez filtra".
    
10.  Na przykład, kliknij ikonę ołówka, aby nazwać swojego odbiorcę zdarzeń: "Rabbit-1 Listener".
    
11.  Kliknij "Zapisz zmiany" w prawym dolnym rogu ekranu.
    

Po wykonaniu tych kroków zdarzenie w portalu PubNub powinno wyglądać następująco:

![](https://www.pubnub.com/cdn/3prze68gbwl1/1N2ktJi5nfhV5cwzbxsV9w/bacc1ee24c33c884a7e20d552edac22f/Screenshot_2024-02-28_at_1.07.07_AM.png)

### Konfigurowanie akcji PubNub do Rabbit MQ

Teraz skonfigurujemy akcję Rabbit MQ na portalu PubNub:

1.  W zakładce "Events & Actions" wybierz "+ Add Action".
    
2.  W sekcji Typ akcji wybierz "AMQP".
    
3.  Wybierz rozwijaną opcję "Add event listener" i wybierz słuchacza zdarzeń utworzonego powyżej. W tym przypadku wybierz "Rabbit-1 Listener".
    

Będziemy musieli uzyskać adres URL AMQP do naszej instancji RabbitMQ. Po pierwsze, adresy URL AMQP są sformatowane w następującym formacie:

a**_mqps://_**username:password@host.name:port

Nazwa użytkownika i hasło przypisane do instancji RabbitMQ zostaną tutaj użyte, aby PubNub mógł wysyłać wiadomości do instancji. W moim przypadku adres URL byłby zdefiniowany w następujący sposób:  
  
a**_mqps://_**username:password@b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com:5671

Nazwę hosta można znaleźć, przechodząc do instancji Rabbit MQ w Amazon MQ.

1.  Wybierz swoją instancję; jeśli jesteś na bieżąco, wybierz instancję "rabbit-1".
    
2.  Przewiń w dół. W sekcji "Połączenia" i "Punkty końcowe" skopiuj nazwę hosta i port.
    

W tym przypadku moja nazwa hosta to:

[**_b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com_**](mailto:password@b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com)**_:5671_**

![](https://www.pubnub.com/cdn/3prze68gbwl1/5DCfgqND97DuWM4gzXfgHq/c9dec4de19377075134e24296d2d3f20/image3.png)

Do tej pory nasza akcja powinna wyglądać następująco. Musimy jednak utworzyć i wymienić klucz routingu. Aby to zrobić, wykonaj poniższe kroki:

1.  Przejdź z powrotem do instancji Amazon MQ "rabbit-1".
    
2.  Przewiń w dół do sekcji Connections i kliknij łącze RabbitMQ web console. Spowoduje to przekierowanie do konsoli zarządzania RabbitMQ.
    
3.  Powinieneś zobaczyć stronę internetową, która wygląda tak:
    

![](https://www.pubnub.com/cdn/3prze68gbwl1/5lZkMMdAqoXR5tffYI8Kdj/cd4db2aa907098f0007b2ebdc95492f7/Image_4.png)

Wprowadź nazwę użytkownika i hasło zdefiniowane wcześniej podczas tworzenia instancji RabbitMQ. Po zalogowaniu się do konsoli zarządzania RabbitMQ, utworzymy kolejkę. Wykonaj poniższe kroki, aby uzyskać klucz routingu:

1.  Po zalogowaniu się do konsoli zarządzania przejdź do zakładki "Kolejki".
    
2.  Wybierz rozwijaną opcję "Dodaj nową kolejkę".
    
3.  Nadaj kolejce nazwę; będzie to klucz routingu.
    
4.  Wybierz "Dodaj kolejkę".
    

Konsola zarządzania powinna teraz wyglądać następująco:

![](https://www.pubnub.com/cdn/3prze68gbwl1/6m5GFhKxpJ8RxwmcdRNDBG/c07eb1055de0508a5eb1e5815425d5dd/GDhoAIVsr_Ll6U-BoBas09ZExbUj1lvt8sLYsNZqxU3QI2EPyFvtcFDoRJvP2D2l3l3FrJmbXU_bFitsH_9P7zalf8ptcgDIdF43W_jyRijw_t_WLfcEj0m_Z4r0.png)

Teraz utworzymy giełdę dla kolejki. Giełda to miejsce, do którego wysyłane są wiadomości. Giełdy pobierają wiadomości i kierują je do 0 lub więcej kolejek. Algorytm routingu zależy od typu wymiany i reguł zwanych powiązaniami. Utwórzmy giełdę.

1.  Przejdź do zakładki "Giełdy".
    
2.  Wybierz giełdę "amqp.direct".
    
3.  Wybierz listę rozwijaną "Bindings". Tutaj zamierzamy powiązać giełdę z kolejką.
    
4.  W zakładce "To queue" chcemy wpisać "Publisher", ponieważ jest to nazwa naszej kolejki.
    
5.  Klucz routingu może być dowolny. Ja użyłem "amqp.publisher".
    

Konfiguracja konsoli RabbitMQ powinna teraz odzwierciedlać konfigurację klucza wymiany i routingu, dostosowaną do obsługi danych w czasie rzeczywistym i powiadomień w architekturze mikrousług.

![](https://www.pubnub.com/cdn/3prze68gbwl1/5JwFENUlYKvwz4yb3gOF4w/b6af0191a23d10aad0eaa912159642ca/Image_6.png)

Skopiuj nazwę klucza routingu i Exchange wypełniając wymagane pola w akcji PubNub:

![](https://www.pubnub.com/cdn/3prze68gbwl1/5rOmc38fBgMHrDJnw5Fohb/49d67601ff3925d1730fd0f29457bd52/Image_7.png)

Testowanie integracji RabbitMQ z PubNub E&A
-------------------------------------------

Możemy użyć PubNub Debug Console, aby przetestować naszą integrację. Przejdź do portalu administracyjnego PubNub i po lewej stronie wybierz "Debug Console". Ponieważ nie mamy filtrów w naszym Event Listener, za każdym razem, gdy publikujemy wiadomość do dowolnego kanału, nasza akcja powinna zostać uruchomiona, a wiadomość PubNub powinna zostać wysłana do przetworzenia przez naszą instancję RabbitMQ. Wystarczy wpisać dowolną wiadomość i nacisnąć "Wyślij" na dowolnym kliencie. Teraz sprawdzimy, czy nasza instancja RabbitMQ otrzymała tę wiadomość.

![](https://www.pubnub.com/cdn/3prze68gbwl1/7gEpCaLvIUqGnSSOFwyqw3/3a48565674d0fd9048f3cd874c9b72f0/Image_8.png)

Po opublikowaniu wiadomości powinniśmy być w stanie zobaczyć wiadomość w kolejce "Wydawca" w konsoli zarządzania RabbitMQ, demonstrując wydajną przepustowość wiadomości i niezawodność naszego systemu przesyłania wiadomości w czasie rzeczywistym. Powinieneś zobaczyć swoją wiadomość w konsoli RabbitMQ w następujący sposób.

![](https://www.pubnub.com/cdn/3prze68gbwl1/4EMqQ7mmU1wk8zMli69YYB/1e3e12292fffc203e2f32678512c5d12/Image_9.png)

W tym przypadku opublikowałem 7 wiadomości, które są gotowe do przetworzenia w kolejce.

Co dalej
--------

W tym poradniku opisano kroki konfiguracji PubNub Events & Actions i hostowanej instancji RabbitMQ w celu opracowania responsywnych systemów przesyłania wiadomości zapewniających wysoką przepustowość dostarczania wiadomości. Istnieje wiele przypadków użycia, dla których ktoś chciałby przetwarzać własne wiadomości PubNub, takich jak definiowanie niektórych operacji z interaktywnością w czasie rzeczywistym, którą PubNub zapewnia z danymi połączonymi z serwerami internetowymi. Na przykład, wykorzystując [PubNub Unity SDK](https://www.pubnub.com/docs/sdks/unity)przetwarzanie w czasie rzeczywistym działań użytkownika w grach wieloosobowych może być wykorzystywane do dobierania graczy, aktualizacji stanu gry na żywo, tabel wyników i czatu w grze, zapewniając bardziej interaktywne wrażenia z gry. Istnieje wiele innych przypadków użycia aplikacji internetowych, więc sprawdź naszą ofertę [Javascript](https://www.pubnub.com/docs/sdks/javascript) lub [Java SDK](https://www.pubnub.com/docs/sdks/java).

Chociaż w tym artykule omówiono jedną z akcji PubNub, które można skonfigurować za pomocą PubNub E&A, istnieje wiele innych, które obejmują:

-   [Wykonanie połączenia Webhook](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-webhook-action) (tj. wywołanie serwera dla każdego przefiltrowanego zdarzenia)
    
-   [Zapisz w SQS](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-sqs-action) (tj. zapisywanie każdego zdarzenia w kolejce [Usługa kolejkowania SQS firmy Amazon](https://aws.amazon.com/sqs/))
    
-   [Wyślij do Kinesis](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kinesis-action) (tj. wyślij do [Amazon's Event Ingestion Service](https://aws.amazon.com/kinesis/))
    
-   [Wyślij do S3](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-s3-action) (tj. przechowywać dane w zasobniku [Amazon S3 bucket](https://aws.amazon.com/s3/))
    
-   [Send to Kafka](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action) (tj. wysyłanie danych do [Apache Kafka](https://kafka.apache.org/))
    
-   [Create IFTTT Action](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-ifttt-action) (tj. wyślij do [If This Then That](https://ifttt.com/))
    

W razie jakichkolwiek pytań lub wątpliwości prosimy o kontakt z zespołem ds. relacji z programistami pod adresem devrel@pubnub.com.

#### Spis treści

[Wprowadzenie do zdarzeń i akcji Pub](#h-0)NubCo[to jest AMQPBrokerzy](#h-1)[i ich rola](#h-2)Co[to jest RabbitMQTworzenie](#h-3)[akcji RabbitMQ (AMQP)](#h-4)[PubNubWymagania](#h-5)[wstępneUstawianie](#h-4)[instancji RabbitMQUstawianie](#h-6)[odbiornika zdarzeń PubNubUstawianie](#h-7)[akcji PubNub dla Rabbit MQTestowanie](#h-8)[integracji RabbitMQ z PubNub Events & A](#h-9)[ctionsCo](#h-0)[dalej](#h-10)?

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://www.pubnub.com/how-to/stream-events-from-pubnub-to-rabbitmq/)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Fundamentem naszej platformy jest największa w branży i najbardziej skalowalna sieć przesyłania wiadomości w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs).