Udostępnij za pośrednictwem


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
  • JMSContext.createQueue( String queueName)
Obsługiwane
Tematy
  • JMSContext.createTopic( Nazwa tematu ciągu)
Obsługiwane
Kolejki tymczasowe
  • JMSContext.createTemporaryQueue()
Obsługiwane
Tematy tymczasowe
  • JMSContext.createTemporaryTopic()
Obsługiwane
Producent wiadomości /
JMSProducer
  • JMSContext.createProducer()
Obsługiwane
Przeglądarki kolejek
  • JMSContext.createBrowser(Kolejka kolejki)
  • JMSContext.createBrowser(kolejka kolejki, komunikat ciąguSelector)
Obsługiwane
Odbiorca wiadomości/
JMSConsumer
  • JMSContext.createConsumer( Miejsce docelowe)
  • JMSContext.createConsumer( Miejsce docelowe, Ciąg messageSelector)
  • JMSContext.createConsumer( Miejsce docelowe, MessageSelector ciągów, wartość logiczna noLocal)

noLocal nie jest obecnie obsługiwany
Obsługiwane
Udostępnione trwałe subskrypcje
  • JMSContext.createSharedDurableConsumer(temat tematu, nazwa ciągu)
  • JMSContext.createSharedDurableConsumer(temat tematu, nazwa ciągu, messageSelector ciągu)
Obsługiwane
Nieudostępniane trwałe subskrypcje
  • JMSContext.createDurableConsumer(Temat, Nazwa ciągu)
  • createDurableConsumer(temat tematu, nazwa ciągu, message MessageSelector, wartość logiczna noLocal)

wartość noLocal nie jest obecnie obsługiwana i powinna być ustawiona na wartość false
Obsługiwane
Udostępnione subskrypcje nietrwałe
  • JMSContext.createSharedConsumer(Temat, String sharedSubscriptionName)
  • JMSContext.createSharedConsumer(Temat, String sharedSubscriptionName, String messageSelector)
Obsługiwane
Nieudostępne subskrypcje nietrwałe
  • JMSContext.createConsumer(Miejsce docelowe)
  • JMSContext.createConsumer( Miejsce docelowe, Ciąg messageSelector)
  • JMSContext.createConsumer( Miejsce docelowe, MessageSelector ciągów, wartość logiczna noLocal)

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)
  • JMSProducer.setDeliveryDelay( długa dostawaDelay)
Obsługiwane
Utworzono komunikat
  • JMSContext.createMessage()
  • JMSContext.createBytesMessage()
  • JMSContext.createMapMessage()
  • JMSContext.createObjectMessage( Obiekt z możliwością serializacji)
  • JMSContext.createStreamMessage()
  • JMSContext.createTextMessage()
  • JMSContext.createTextMessage( Tekst ciągu)
Obsługiwane
Transakcje między jednostkami
  • Connection.createSession(true, Session.SESSION_TRANSACTED)
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.

  1. Tworzenie wystąpienia ServiceBusJmsConnectionFactorySettings

    ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings();
    connFactorySettings.setConnectionIdleTimeoutMS(20000);
    
  2. Utwórz wystąpienie elementu ServiceBusJmsConnectionFactory przy użyciu odpowiedniego ServiceBusConnectionStringelementu .

    String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>";
    ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
    
  3. Użyj elementu ConnectionFactory , aby utworzyć element , Connection a następnie Session

    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 MessageProducerelementu , MessageConsumeri Message samego siebie. Aby uzyskać więcej informacji, zapoznaj się z modelem programowania interfejsu API JMS

    W 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.