Używanie interfejsu API usługi Java Message Service 2.0 z usługą Azure Service Bus Premium

W tym artykule wyjaśniono, jak używać popularnego interfejsu API usługi Java Message Service (JMS) 2.0 do interakcji z 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 tak nie jest, utwórz przestrzeń nazw i kolejkę przy użyciu Azure Portal. Aby uzyskać więcej informacji na temat tworzenia przestrzeni nazw i kolejek usługi Service Bus, zobacz Rozpoczynanie pracy z kolejkami usługi Service Bus za pośrednictwem Azure Portal.

Konfigurowanie środowiska deweloperskiego Java

Aby tworzyć aplikacje Java, należy skonfigurować odpowiednie środowisko projektowe —

  • 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 Środowisko 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 Azure Service Bus obecnie obsługiwane. Pokazuje również funkcje, które nie są obsługiwane.

Cecha interfejs API Stan
Kolejki
  • JMSContext.createQueue( String queueName)
Obsługiwane
Tematy
  • JMSContext.createTopic( String topicName)
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)
  • 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, Ciąg messageSelector, wartość logiczna noLocal)

NoLocal nie jest obecnie obsługiwany
Obsługiwane
Udostępnione trwałe subskrypcje
  • JMSContext.createSharedDurableConsumer(Temat, Nazwa ciągu)
  • JMSContext.createSharedDurableConsumer(temat tematu, nazwa ciągu, komunikat stringSelector)
Obsługiwane
Nieudostępne trwałe subskrypcje
  • JMSContext.createDurableConsumer(Temat, Nazwa ciągu)
  • createDurableConsumer(Temat, Nazwa ciągu, Ciąg 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, Ciąg sharedSubscriptionName)
  • JMSContext.createSharedConsumer(Temat, String sharedSubscriptionName, String messageSelector)
Obsługiwane
Nieudostępne subskrypcje nietrwałe
  • JMSContext.createConsumer(Docelowa lokalizacja docelowa)
  • JMSContext.createConsumer( Miejsce docelowe, Ciąg messageSelector)
  • JMSContext.createConsumer( Miejsce docelowe, Ciąg messageSelector, 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 serializowalny)
  • 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 korzystać ze wszystkich funkcji dostępnych w warstwie Premium, dodaj następującą bibliotekę do ścieżki kompilacji projektu.

Azure-servicebus-jms

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 sposób niezależny od dostawcy JMS.

Nawiązywanie połączenia z Azure Service Bus przy użyciu programu JMS

Aby nawiązać połączenie z Azure Service Bus przy użyciu klientów JMS, potrzebne są parametry połączenia dostępne w obszarze Podstawowe parametry połączenia w Azure Portal obszarze "Zasady dostępu współdzielonego".

  1. Tworzenie wystąpienia ServiceBusJmsConnectionFactorySettings

    ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings();
    connFactorySettings.setConnectionIdleTimeoutMS(20000);
    
  2. ServiceBusJmsConnectionFactory Utwórz wystąpienie 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();
    

    lub ( JMSContext dla klientów JMS 2.0)

    JMSContext jmsContext = factory.createContext();
    

    Ważne

    Podobnie nazwany element JMS "Session" i Service Bus "Session" jest całkowicie niezależny 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 Session wystąpienia lub JMSContext aplikacja może używać znanych interfejsów API JMS do wykonywania operacji zarządzania i danych. Zapoznaj się z listą obsługiwanych funkcji JMS , aby zobaczyć, które interfejsy API są obsługiwane. Poniżej przedstawiono kilka przykładowych fragmentów kodu, aby rozpocząć pracę 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 w temacie

// 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ą współdziałać z Azure Service Bus.

Można również użyć usługi Service Bus AMQP 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.

Następne kroki

Aby uzyskać więcej informacji na temat Azure Service Bus i szczegółów dotyczących jednostek usługi Java Message Service (JMS), zapoznaj się z poniższymi linkami —