Verwenden der Java Message Service 2.0-API mit Azure Service Bus Premium
Dieser Artikel erläutert die Verwendung der beliebten API JMS 2.0 (Java Message Service) für die Interaktion mit Azure Service Bus über das AMQP (Advanced Message Queueing Protocol) 1.0-Protokoll.
Hinweis
Unterstützung für die Java Message Service (JMS) 2.0-API ist nur im Premium-Tarif verfügbar.>
Voraussetzungen
Erste Schritte mit Service Bus
In diesem Leitfaden wird davon ausgegangen, dass Sie bereits über einen Service Bus-Namespace verfügen. Falls nicht, erstellen Sie einen Namespace und eine Warteschlange über das Azure-Portal. Weitere Informationen zum Erstellen von Namespaces und Warteschlangen für Service Bus finden Sie unter Erste Schritte mit Service Bus-Warteschlangen im Azure-Portal.
Einrichten einer Java-Entwicklungsumgebung
Zum Entwickeln von Java-Anwendungen müssen Sie die entsprechende Entwicklungsumgebung einrichten:
- Entweder das JDK (Java Development Kit) oder die JRE (Java Runtime Environment) ist installiert.
- Das JDK oder die JRE wird dem Buildpfad und den entsprechenden Systemvariablen hinzugefügt.
- Es wird eine Java-IDE installiert, um das JDK oder die JRE zu verwenden. Beispielsweise Eclipse oder IntelliJ.
Weitere Informationen zum Vorbereiten Ihrer Entwicklerumgebung für Java in Azure finden Sie in diesem Handbuch.
Welche JMS-Funktionen werden unterstützt?
In der folgenden Tabelle sind die zurzeit von Azure Service Bus unterstützten JMS-Funktionen (Java Message Service) aufgelistet. Außerdem werden Funktionen angezeigt, die nicht unterstützt werden.
Funktion | API | Status |
---|---|---|
Warteschlangen |
|
Unterstützt |
Themen |
|
Unterstützt |
Temporäre Warteschlangen |
|
Unterstützt |
Temporäre Themen |
|
Unterstützt |
Message Producer / JMSProducer |
|
Unterstützt |
Warteschlangenbrowser |
|
Unterstützt |
Message Consumer/ JMSConsumer |
„noLocal“ wird zurzeit nicht unterstützt. |
Unterstützt |
Freigegebene dauerhafte Abonnements |
|
Unterstützt |
Nicht freigegebene dauerhafte Abonnements |
„noLocal“ wird zurzeit nicht unterstützt und sollte auf „false“ festgelegt werden. |
Unterstützt |
Freigegebene nicht dauerhafte Abonnements |
|
Unterstützt |
Nicht freigegebene nicht dauerhafte Abonnements |
„noLocal“ wird zurzeit nicht unterstützt und sollte auf „false“ festgelegt werden. |
Unterstützt |
Nachrichtenselektoren | Abhängig vom erstellten Consumer. | Unterstützt |
Tägliche Zustellung (geplante Nachrichten) |
|
Unterstützt |
Nachricht erstellt |
|
Unterstützt |
Entitätsübergreifende Transaktionen |
|
Unterstützt |
Verteilte Transaktionen | Nicht unterstützt |
Herunterladen der JMS-Clientbibliothek (Java Message Service)
Fügen Sie dem Buildpfad des Projekts die folgende Bibliothek hinzu, um alle im Premium-Tarif verfügbaren Features nutzen zu können: azure-servicebus-jms. Dieses Paket beinhaltet standardmäßig einige erforderliche Standardwerte wie Prefetch-Richtlinienwerte, Richtlinien für das erneute Verbinden, Microsoft Entra ID und Managed Identity-Unterstützung.
Hinweis
Um dem Buildpfad azure-servicebus-jms hinzuzufügen, verwenden Sie das bevorzugte Tool zur Verwaltung von Abhängigkeiten für Ihr Projekt wie Maven oder Gradle.
Programmieren von Java-Anwendungen
Nachdem die Abhängigkeiten importiert worden sind, können die Java-Anwendungen in einer vom JMS-Anbieter unabhängigen Weise geschrieben werden.
Herstellen einer Verbindung mit Azure Service Bus mithilfe von JMS
Zum Herstellen einer Verbindung mit Azure Service Bus mithilfe von JMS-Clients benötigen Sie die Zeichenfolge, die im Azure-Portal in den „SAS-Richtlinien“ unter Primäre Verbindungszeichenfolge verfügbar ist.
Instanziieren der
ServiceBusJmsConnectionFactorySettings
ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings(); connFactorySettings.setConnectionIdleTimeoutMS(20000);
Instanziieren Sie die
ServiceBusJmsConnectionFactory
mit dem entsprechendenServiceBusConnectionString
-Element.String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>"; ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
Verwenden Sie die
ConnectionFactory
, um eineConnection
und dann eineSession
Connection connection = factory.createConnection(); Session session = connection.createSession();
oder einen
JMSContext
(für JMS 2.0-Clients) zu erstellen.JMSContext jmsContext = factory.createContext();
Wichtig
Obwohl eine JMS-„Sitzung“ und eine Service Bus-„Sitzung“ ähnlich benannt sind, sind sie voneinander vollständig unabhängig.
In JMS 1.1 ist die Sitzung ein wesentlicher Baustein der API, der die Erstellung von
MessageProducer
,MessageConsumer
und derMessage
selbst ermöglicht. Weitere Informationen finden Sie im Tutorial zum JMS-API-Programmiermodell.In Service Bus handelt es sich bei Sitzungen um dienst- und clientseitige Konstrukte zum Aktivieren der FIFO-Verarbeitung für Warteschlangen und Abonnements.
Schreiben der JMS-Anwendung
Nachdem Session
oder JMSContext
instanziiert worden ist, kann die Anwendung die vertrauten JMS-APIs verwenden, um sowohl Verwaltungs- als auch Datenvorgänge auszuführen. Der Liste der unterstützten JMS-Features können Sie entnehmen, welche APIs unterstützt werden. Hier finden Sie einige Beispielcodeschnipsel für die ersten Schritte mit JMS:
Senden von Nachrichten an eine Warteschlange und ein Thema
// 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);
Empfangen von Nachrichten aus einer Warteschlange
// 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();
Empfangen von Nachrichten aus einem freigegebenen permanenten Abonnement für ein Thema
// 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();
Zusammenfassung
In diesem Leitfaden wurde gezeigt, wie Java-Clientanwendungen, die Java Message Service (JMS) über AMQP 1.0 verwenden, mit Azure Service Bus interagieren können.
Sie können Service Bus AMQP 1.0 auch mit anderen Sprachen verwenden, unter anderem .NET, C, Python und PHP. Komponenten, die mit diesen verschiedenen Sprachen geschrieben wurden, können mit der AMQP 1.0-Unterstützung in Service Bus Nachrichten zuverlässig und bei voller Vertraulichkeit austauschen.