Udostępnij za pośrednictwem


Jak zintegrować usługę Service Bus z aplikacją RabbitMQ

W tym przewodniku dowiesz się, jak wysyłać komunikaty z rabbitMQ do usługi Service Bus.

Oto kilka scenariuszy, w których możemy skorzystać z tych możliwości:

  • Konfiguracje brzegowe: mamy konfigurację brzegową, w której wysyłamy komunikaty do rabbitMQ, ale chcemy przekazać te komunikaty do usługi Azure Service Bus w celu dalszego przetwarzania, dzięki czemu możemy użyć wielu funkcji danych big data platformy Azure.
  • Chmura hybrydowa: Twoja firma właśnie nabyła inną firmę, która korzysta z oprogramowania RabbitMQ na potrzeby obsługi komunikatów. Znajdują się one w innej chmurze. Podczas przechodzenia na platformę Azure możesz już rozpocząć udostępnianie danych przez mostkowanie rabbitMQ za pomocą usługi Azure Service Bus.
  • Integracja innej firmy: inna firma używa firmy RabbitMQ jako brokera i chce wysłać do nas swoje dane, ale znajdują się poza naszą organizacją. Możemy zapewnić im klucz sygnatury dostępu współdzielonego, zapewniając im dostęp do ograniczonego zestawu kolejek usługi Azure Service Bus, do których mogą przekazywać komunikaty.

Lista jest włączona, ale większość z tych przypadków użycia można rozwiązać przez mostkowanie RabbitMQ na platformę Azure.

Najpierw musisz utworzyć bezpłatne konto platformy Azure, tworząc konto tutaj

Po zalogowaniu się do konta przejdź do witryny Azure Portal i utwórz nową przestrzeń nazw usługi Azure Service Bus. Przestrzenie nazw to kontenery określające zakres, w których będą aktywne składniki obsługi komunikatów, takie jak kolejki i tematy.

Dodawanie nowej przestrzeni nazw usługi Azure Service Bus

W witrynie Azure Portal kliknij duży przycisk plus, aby dodać nowy zasób

Tworzenie zasobu

Następnie wybierz pozycję Integracja i kliknij pozycję Azure Service Bus, aby utworzyć przestrzeń nazw obsługi komunikatów:

Wybieranie usługi Azure Service Bus

Zostanie wyświetlony monit o wprowadzenie informacji o przestrzeni nazw. Wybierz subskrypcję platformy Azure, której chcesz użyć. Jeśli nie masz grupy zasobów, możesz utworzyć nową.

Create namespace

Użyj polecenia rabbitmq dla Namespace nameelementu , ale może to być dowolny element. Następnie ustaw East US dla lokalizacji. Wybierz Basic jako warstwę cenową.

Jeśli wszystko poszło dobrze, powinien zostać wyświetlony następujący ekran potwierdzenia:

Potwierdzenie utworzenia przestrzeni nazw

Następnie w witrynie Azure Portal zobaczysz tam nową rabbitmq przestrzeń nazw. Kliknij go, aby uzyskać dostęp do zasobu, aby dodać do niego kolejkę.

Lista zasobów z nową przestrzenią nazw

Tworzenie kolejki usługi Azure Service Bus

Teraz, gdy masz przestrzeń nazw usługi Azure Service Bus, kliknij Queues przycisk po lewej stronie w obszarze Entities, aby dodać nową kolejkę:

Tworzenie kolejki

Nazwa kolejki będzie from-rabbitmq równie przypomnieniem, skąd pochodzą komunikaty. Możesz pozostawić wszystkie inne opcje jako domyślne, ale można je zmienić tak, aby odpowiadały potrzebom aplikacji.

Włączanie wtyczki Shovel RabbitMQ

Aby wysłać komunikaty z rabbitMQ do usługi Azure Service Bus, użyjemy wtyczki Shovel, która jest dostarczana z pakietem RabbitMQ. Wtyczkę i jej interfejs wizualny można włączyć za pomocą tego polecenia:

rabbitmq-plugins enable rabbitmq_shovel_management

Może być konieczne uruchomienie tego polecenia jako głównego.

Teraz nadszedł czas, aby uzyskać poświadczenia wymagane do nawiązania połączenia RabbitMQ z platformą Azure.

Łączenie oprogramowania RabbitMQ z usługą Azure Service Bus

Musisz utworzyć zasady dostępu współdzielonego (SAS) dla kolejki, aby aplikacja RabbitMQ mogła publikować w niej komunikaty. Zasady sygnatury dostępu współdzielonego pozwalają określić, jakie dane strony zewnętrzne mogą robić z zasobem. Chodzi o to, że RabbitMQ jest w stanie wysyłać komunikaty, ale nie nasłuchiwać ani zarządzać kolejką.

Dodaj zasady sygnatury dostępu współdzielonego

Send Zaznacz pole, a następnie kliknijCreate, aby umieścić nasze zasady sygnatury dostępu współdzielonego.

Po utworzeniu zasad kliknij je, aby wyświetlić podstawowe parametry połączenia. Użyjemy go, aby umożliwić RabbitMQ rozmowę z usługą Azure Service Bus:

Uzyskiwanie zasad sygnatury dostępu współdzielonego

Aby można było użyć tego parametry połączenia, należy przekonwertować go na format połączenia AMQP rabbitMQ. Przejdź więc do narzędzia konwertera parametry połączenia i wklej parametry połączenia w formularzu, kliknij przycisk konwertuj. Otrzymasz parametry połączenia, który jest gotowy RabbitMQ. (Ta witryna internetowa uruchamia wszystko lokalnie w przeglądarce, więc dane nie są wysyłane za pośrednictwem przewodu). Możesz uzyskać dostęp do jego kodu źródłowego w usłudze GitHub.

Konwertowanie parametry połączenia

Teraz otwórz wtyczkę zarządzania RabbitMQ w naszych przeglądarkach http://localhost:15672/#/dynamic-shovels i przejdź do Admin -> Shovel Managementwitryny , gdzie możesz dodać nowy łopatę, która zajmie się wysyłaniem komunikatów z kolejki RabbitMQ do kolejki usługi Azure Service Bus.

Dodawanie shovel RabbitMQ

W tym miejscu wywołaj element Shovel azure i wybierz go AMQP 0.9.1 jako protokół źródłowy. Na zrzucie ekranu mamy amqp://identyfikator , który jest domyślnym identyfikatorem URI, który łączy nas z lokalnym serwerem RabbitMQ. Pamiętaj, aby dostosować je do bieżącego wdrożenia.

Po stronie kolejki możesz użyć azure nazwy kolejki. Jeśli ta kolejka nie istnieje, program RabbitMQ utworzy ją dla Ciebie. Możesz również wybrać nazwę kolejki, która już istnieje. Możesz pozostawić inne opcje jako domyślne.

Następnie po destination stronie rzeczy wybierz AMQP 1.0 jako protokół. URI W polu wprowadź ciąg połączenia uzyskany z poprzedniego kroku, czy przekonwertowano parametry połączenia platformy Azure na format RabbitMQ. Powinien on wyglądać następująco:

amqps://rabbitmq-shovel:StringOfRandomChars@rabbitmq.servicebus.windows.net:5671/?sasl=plain

Address W polu wprowadzimy nazwę kolejki usługi Azure Service Bus, w tym przypadku została ona wywołana .from-rabbitmq Kliknij pozycję Add Shovel, a konfiguracja powinna być gotowa do rozpoczęcia odbierania komunikatów.

Publikowanie komunikatów z programu RabbitMQ do usługi Azure Service Bus

W interfejsie zarządzania RabbitMQ możemy przejść do Queues, wybrać kolejkę azure i wyszukać Publish message panel. Zostanie wyświetlony formularz, który umożliwi publikowanie komunikatów bezpośrednio w kolejce. W naszym przykładzie po prostu first message dodamy element i trafimy Publish Message:Payload

Publikowanie pierwszej wiadomości

Wróć do platformy Azure i sprawdź kolejkę. Kliknij Service Bus Explorer w lewym panelu, a następnie kliknij przycisk Zobacz . Jeśli wszystko poszło dobrze, zobaczysz, że kolejka ma teraz jeden komunikat. Yay, gratulacje!

Kolejka usługi Azure Service Bus

Ale upewnijmy się, że wiadomość jest tym, który został wysłany z RabbitMQ. Wybierz kartę Peek i kliknij Peek przycisk , aby pobrać ostatnie komunikaty w kolejce. Kliknij komunikat, aby sprawdzić jego zawartość. Powinien zostać wyświetlony obraz podobny do poniższego, na którym znajduje się Twoja first message nazwa.

Zobacz kolejkę

Podsumujmy ponownie

Gratulacje! Udało Ci się osiągnąć wiele! Udało Ci się pobrać komunikaty z rabbitMQ do usługi Azure Service Bus, podsumujmy kroki:

  1. Tworzenie przestrzeni nazw usługi Azure Service Bus
  2. Dodawanie kolejki do przestrzeni nazw
  3. Dodawanie zasad sygnatury dostępu współdzielonego do kolejki
  4. Pobieranie parametry połączenia kolejki
  5. Włączanie wtyczki shovel RabbitMQ i interfejsu zarządzania
  6. Konwertowanie parametry połączenia usługi Azure Service Bus na format AMQP rabbitMQ
  7. Dodawanie nowego shovel do rabbitMQ i łączenie go z usługą Azure Service Bus
  8. Publikowanie komunikatów

Wykonując poprzednie kroki, zintegrowano obszary organizacji, które znajdowały się poza platformą Azure. Wtyczka Shovel umożliwia wysyłanie komunikatów z rabbitMQ do usługi Azure Service Bus. Ma to ogromne zalety, ponieważ teraz można zezwolić zaufanym firmom trzecim na łączenie swoich aplikacji z wdrożeniem platformy Azure.

W końcu obsługa komunikatów dotyczy włączania połączeń i z tą techniką właśnie otworzyliśmy nową.

Następne kroki