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
Następnie wybierz pozycję Integracja i kliknij pozycję Azure Service Bus, aby utworzyć przestrzeń nazw obsługi komunikatów:
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ą.
Użyj polecenia rabbitmq
dla Namespace name
elementu , 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:
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ę.
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ę:
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ą.
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:
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.
Teraz otwórz wtyczkę zarządzania RabbitMQ w naszych przeglądarkach http://localhost:15672/#/dynamic-shovels
i przejdź do Admin -> Shovel Management
witryny , gdzie możesz dodać nowy łopatę, która zajmie się wysyłaniem komunikatów z kolejki RabbitMQ do kolejki usługi Azure Service Bus.
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
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!
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.
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:
- Tworzenie przestrzeni nazw usługi Azure Service Bus
- Dodawanie kolejki do przestrzeni nazw
- Dodawanie zasad sygnatury dostępu współdzielonego do kolejki
- Pobieranie parametry połączenia kolejki
- Włączanie wtyczki shovel RabbitMQ i interfejsu zarządzania
- Konwertowanie parametry połączenia usługi Azure Service Bus na format AMQP rabbitMQ
- Dodawanie nowego shovel do rabbitMQ i łączenie go z usługą Azure Service Bus
- 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
- Dowiedz się więcej o usłudze Azure Service Bus
- Dowiedz się więcej o obsłudze protokołu AMQP 1.0 w usłudze Service Bus