Używanie interfejsu API usługi Java Message Service 2.0 z usługą Azure Service Bus Premium
W tym artykule wyjaśniono, jak korzystać z popularnego interfejsu API usługi Java Message Service (JMS) 2.0 do interakcji z usługą Azure Service Bus za pośrednictwem protokołu ADVANCED Message Queueing Protocol (AMQP) 1.0.
Uwaga
Obsługa interfejsu API usługi Java Message Service (JMS) 2.0 jest dostępna tylko w warstwie Premium.>
Wymagania wstępne
Rozpoczynanie pracy z usługą Service Bus
W tym przewodniku założono, że masz już przestrzeń nazw usługi Service Bus. Jeśli tego nie zrobisz, utwórz przestrzeń nazw i kolejkę przy użyciu witryny Azure Portal. Aby uzyskać więcej informacji na temat tworzenia przestrzeni nazw i kolejek usługi Service Bus, zobacz Wprowadzenie do kolejek usługi Service Bus za pośrednictwem witryny Azure Portal.
Konfigurowanie środowiska deweloperskiego Java
Aby tworzyć aplikacje Java, należy skonfigurować odpowiednie środowisko programistyczne —
- Zainstalowano zestaw JDK (Java Development Kit) lub środowisko JRE (środowisko uruchomieniowe Java).
- Zestaw JDK lub JRE jest dodawany do ścieżki kompilacji i odpowiednich zmiennych systemowych.
- Środowisko IDE języka Java jest instalowane w celu korzystania z zestawu JDK lub środowiska JRE. Na przykład Eclipse lub IntelliJ.
Aby dowiedzieć się więcej na temat przygotowywania środowiska deweloperskiego dla języka Java na platformie Azure, skorzystaj z tego przewodnika.
Jakie funkcje JMS są obsługiwane?
W poniższej tabeli wymieniono funkcje usługi Java Message Service (JMS), które obecnie obsługuje usługa Azure Service Bus. Pokazuje również funkcje, które nie są obsługiwane.
Funkcja | interfejs API | Stan |
---|---|---|
Kolejki |
|
Obsługiwane |
Tematy |
|
Obsługiwane |
Kolejki tymczasowe |
|
Obsługiwane |
Tematy tymczasowe |
|
Obsługiwane |
Producent wiadomości / JMSProducer |
|
Obsługiwane |
Przeglądarki kolejek |
|
Obsługiwane |
Odbiorca wiadomości/ JMSConsumer |
noLocal nie jest obecnie obsługiwany |
Obsługiwane |
Udostępnione trwałe subskrypcje |
|
Obsługiwane |
Nieudostępniane trwałe subskrypcje |
wartość noLocal nie jest obecnie obsługiwana i powinna być ustawiona na wartość false |
Obsługiwane |
Udostępnione subskrypcje nietrwałe |
|
Obsługiwane |
Nieudostępne subskrypcje nietrwałe |
wartość noLocal nie jest obecnie obsługiwana i powinna być ustawiona na wartość false |
Obsługiwane |
Selektory komunikatów | zależy od utworzonego konsumenta | Obsługiwane |
Opóźnienie dostarczania (zaplanowane komunikaty) |
|
Obsługiwane |
Utworzono komunikat |
|
Obsługiwane |
Transakcje między jednostkami |
|
Obsługiwane |
Transakcje rozproszone | Nieobsługiwane |
Pobieranie biblioteki klienta usługi Java Message Service (JMS)
Aby użyć wszystkich funkcji dostępnych w warstwie Premium, dodaj następującą bibliotekę do ścieżki kompilacji projektu: azure-servicebus-jms. Ten pakiet udostępnia niektóre niezbędne wartości domyślne, takie jak wartości zasad pobierania wstępnego, ponowne nawiązywanie połączeń, identyfikator Entra firmy Microsoft i obsługa tożsamości zarządzanej poza polem.
Uwaga
Aby dodać plik azure-servicebus-jms do ścieżki kompilacji, użyj preferowanego narzędzia do zarządzania zależnościami dla projektu, takiego jak Maven lub Gradle.
Kodowanie aplikacji Java
Po zaimportowaniu zależności aplikacje Java można pisać w niezależny sposób od dostawcy JMS.
Nawiązywanie połączenia z usługą Azure Service Bus przy użyciu programu JMS
Aby nawiązać połączenie z usługą Azure Service Bus przy użyciu klientów JMS, potrzebne są parametry połączenia dostępne w obszarze "Zasady dostępu współdzielonego" w witrynie Azure Portal w obszarze Podstawowe parametry połączenia.
Tworzenie wystąpienia
ServiceBusJmsConnectionFactorySettings
ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings(); connFactorySettings.setConnectionIdleTimeoutMS(20000);
Utwórz wystąpienie elementu
ServiceBusJmsConnectionFactory
przy użyciu odpowiedniegoServiceBusConnectionString
elementu .String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>"; ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
Użyj elementu
ConnectionFactory
, aby utworzyć element ,Connection
a następnieSession
Connection connection = factory.createConnection(); Session session = connection.createSession();
JMSContext
lub (dla klientów JMS 2.0)JMSContext jmsContext = factory.createContext();
Ważne
Mimo że podobnie nazwane, program JMS "Sesja" i usługa Service Bus "Sesja" są całkowicie niezależne od siebie.
W programie JMS 1.1 sesja jest podstawowym blokiem konstrukcyjnym interfejsu API, który umożliwia utworzenie
MessageProducer
elementu ,MessageConsumer
iMessage
samego siebie. Aby uzyskać więcej informacji, zapoznaj się z modelem programowania interfejsu API JMSW usłudze Service Bus sesje są konstrukcją po stronie usługi i klienta w celu włączenia przetwarzania FIFO w kolejkach i subskrypcjach.
Pisanie aplikacji JMS
Po utworzeniu wystąpienia elementu Session
lub JMSContext
aplikacja może używać znanych interfejsów API JMS do wykonywania zarówno operacji zarządzania, jak i danych. Zapoznaj się z listą obsługiwanych funkcji JMS, aby zobaczyć, które interfejsy API są obsługiwane. Oto kilka przykładowych fragmentów kodu, które umożliwiają rozpoczęcie pracy z programem JMS —
Wysyłanie komunikatów do kolejki i tematu
// Create the queue and topic
Queue queue = jmsContext.createQueue("basicQueue");
Topic topic = jmsContext.createTopic("basicTopic");
// Create the message
Message msg = jmsContext.createMessage();
// Create the JMS message producer
JMSProducer producer = jmsContext.createProducer();
// send the message to the queue
producer.send(queue, msg);
// send the message to the topic
producer.send(topic, msg);
Odbieranie komunikatów z kolejki
// Create the queue
Queue queue = jmsContext.createQueue("basicQueue");
// Create the message consumer
JMSConsumer consumer = jmsContext.createConsumer(queue);
// Receive the message
Message msg = (Message) consumer.receive();
Odbieranie komunikatów z udostępnionej trwałej subskrypcji tematu
// Create the topic
Topic topic = jmsContext.createTopic("basicTopic");
// Create a shared durable subscriber on the topic
JMSConsumer sharedDurableConsumer = jmsContext.createSharedDurableConsumer(topic, "sharedDurableConsumer");
// Receive the message
Message msg = (Message) sharedDurableConsumer.receive();
Podsumowanie
W tym przewodniku pokazano, jak aplikacje klienckie Java korzystające z usługi Java Message Service (JMS) za pośrednictwem protokołu AMQP 1.0 mogą wchodzić w interakcje z usługą Azure Service Bus.
Możesz również użyć protokołu AMQP usługi Service Bus 1.0 z innych języków, w tym .NET, C, Python i PHP. Składniki utworzone przy użyciu tych różnych języków mogą niezawodnie wymieniać komunikaty i w pełni wierność przy użyciu obsługi protokołu AMQP 1.0 w usłudze Service Bus.