Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt uitgelegd hoe u de populaire JMS 2.0-API (Java Message Service) gebruikt om te communiceren met Azure Service Bus via het PROTOCOL Advanced Message Queueing Protocol (AMQP) 1.0.
Belangrijke opmerkingen
- JMS 2.0 API-ondersteuning vereist de Azure Service Bus Premium-laag en de azure-servicebus-jms-bibliotheek . Het gebruik van andere JMS-bibliotheken (bijvoorbeeld qpid-jms-client rechtstreeks) voor een Premium-naamruimte resulteert in JMS 1.1-gedrag en sommige JMS 2.0-functies werken mogelijk niet zoals verwacht.
- De bibliotheek is open source en gebouwd op qpid-jms-client : alle qpid-jms-client-API's werken ermee, dus er is geen vergrendeling van de leverancier. Het biedt ook standaardinstellingen voor prefetch-beleid, opnieuw verbindingsbeleid, Microsoft Entra ID, ondersteuning voor beheerde identiteiten en automatisch verwijderen tijdens inactiviteit.
- De bibliotheek is beschikbaar in twee varianten voor Jakarta EE en Java EE. Zie Jakarta EE- en javax-ondersteuning voor meer informatie over welk artefact moet worden gebruikt.
Jakarta EE- en javax-ondersteuning
De azure-servicebus-jms bibliotheek is beschikbaar in twee varianten ter ondersteuning van zowel de verouderde Java EE (javax.jms) als de nieuwere Jakarta EE (jakarta.jms) API-naamruimten.
| API-naamruimte | Maven-artefact | Versies | JMS-specificatie |
|---|---|---|---|
jakarta.jms (Jakarta EE 9+) |
com.azure:azure-servicebus-jms | 2.0.0+ | Jakarta Messaging (JMS 2.0) |
javax.jms (Java EE) |
com.microsoft.azure:azure-servicebus-jms | 1.0.x | JMS 2.0 |
Welk artefact moet ik gebruiken?
Als uw project Jakarta EE 9 of hoger gebruikt (bijvoorbeeld Spring Boot 3.x, Quarkus 3.x of een framework dat importeert
jakarta.jms.*), gebruikt u hetcom.azureartefact:<dependency> <groupId>com.azure</groupId> <artifactId>azure-servicebus-jms</artifactId> <version>2.1.0</version> </dependency>Als uw project nog steeds gebruikmaakt van Java EE (imports
javax.jms.*), blijf dan hetcom.microsoft.azureartefact gebruiken.<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-servicebus-jms</artifactId> <version>1.0.2</version> </dependency>
Belangrijk
Meng de twee artefacten niet. Het gebruik com.azure:azure-servicebus-jms in een project dat importeert javax.jms.* , resulteert in compilatiefouten en omgekeerd.
Migreren van javax naar Jakarta
Als u bezig bent met het upgraden van uw toepassing van Java EE naar Jakarta EE:
- Vervang de ID van uw Maven-afhankelijkheidsgroep van
com.microsoft.azurenaarcom.azureen werk de versie bij naar2.0.0of hoger. - Werk alle
javax.jms.*imports in uw code bij naarjakarta.jms.*. - De
ServiceBusJmsConnectionFactoryAPI en configuratie blijven hetzelfde voor beide varianten, dus er zijn geen codewijzigingen nodig buiten de import- en afhankelijkheidsupdates.
Vereisten
Aan de slag met Service Bus
In deze handleiding wordt ervan uitgegaan dat u al een Service Bus-naamruimte hebt. Als u dit niet doet, maakt u een naamruimte en een wachtrij met behulp van Azure Portal. Zie Aan de slag met Service Bus-wachtrijen via Azure Portal voor meer informatie over het maken van Service Bus-naamruimten en -wachtrijen.
Een Java Development-omgeving instellen
Als u Java-toepassingen wilt ontwikkelen, moet u de juiste ontwikkelomgeving instellen:
- Ofwel de JDK (Java Development Kit) of de JRE (Java Runtime Environment) is geïnstalleerd.
- De JDK of JRE wordt toegevoegd aan het buildpad en de juiste systeemvariabelen.
- Er is een Java IDE geïnstalleerd om de JDK of JRE te gebruiken. Bijvoorbeeld Eclipse of IntelliJ.
Gebruik deze handleiding voor meer informatie over het voorbereiden van uw ontwikkelomgeving voor Java in Azure.
Welke JMS-functies worden ondersteund?
De volgende tabel bevat de JMS-functies (Java Message Service) die momenteel door Azure Service Bus worden ondersteund. Ook worden functies weergegeven die niet worden ondersteund.
| Kenmerk | API (Application Programming Interface) | Toestand |
|---|---|---|
| Wachtrijen |
|
Ondersteund |
| Onderwerpen |
|
Ondersteund |
| Tijdelijke wachtrijen |
|
Ondersteund |
| Tijdelijke onderwerpen |
|
Ondersteund |
| Berichtproducent / JMSProducer |
|
Ondersteund |
| Wachtrijbrowsers |
|
Ondersteund |
| Berichtontvanger JMSConsumer |
noLocal wordt momenteel niet ondersteund |
Ondersteund |
| Gedeelde duurzame abonnementen |
|
Ondersteund |
| Niet-gedeelde duurzame abonnementen |
noLocal wordt momenteel niet ondersteund en moet worden ingesteld op false |
Ondersteund |
| Gedeelde niet-duurzame abonnementen |
|
Ondersteund |
| Niet-gedeelde niet-duurzame abonnementen |
noLocal wordt momenteel niet ondersteund en moet worden ingesteld op false |
Ondersteund |
| Berichtselectors | Is afhankelijk van het gecreëerde type consument. Service Bus-selectors bieden geen ondersteuning voor SQL-trefwoorden LIKE en BETWEEN. | Ondersteund |
| Leveringsvertraging (geplande berichten) |
|
Ondersteund |
| Bericht gemaakt |
|
Ondersteund |
| Transacties tussen entiteiten |
|
Ondersteund |
| Gedistribueerde transacties | Niet ondersteund |
De JMS-clientbibliotheek (Java Message Service) downloaden
Als u alle functies wilt gebruiken die beschikbaar zijn in de Premium-laag, voegt u de bibliotheek azure-servicebus-jms toe aan het buildpad van uw project. Dit pakket biedt de benodigde standaardwaarden, zoals prefetch-beleidswaarden, beleid voor opnieuw verbinden, Microsoft Entra-id en ondersteuning voor beheerde identiteiten. Kies het artefact dat overeenkomt met de API-naamruimte van uw project (zie Jakarta EE en javax-ondersteuning voor meer informatie):
Jakarta EE (jakarta.jms):
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-servicebus-jms</artifactId>
<version>2.1.0</version>
</dependency>
Java EE (javax.jms):
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-servicebus-jms</artifactId>
<version>1.0.2</version>
</dependency>
Notitie
Als u de bibliotheek wilt toevoegen aan het buildpad, gebruikt u het hulpprogramma voor voorkeursbeheer voor afhankelijkheden voor uw project, zoals Maven of Gradle.
Java-toepassingen coderen
Zodra de afhankelijkheden zijn geïmporteerd, kunnen de Java-toepassingen op een JMS-provider-agnostische manier worden geschreven.
Verbinding maken met Azure Service Bus met behulp van JMS
Als u verbinding wilt maken met Azure Service Bus met behulp van JMS-clients, hebt u de verbindingsreeks nodig die beschikbaar is in het beleid voor gedeelde toegang in Azure Portal onder Primaire verbindingsreeks.
Instantieer de
ServiceBusJmsConnectionFactorySettingsServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings(); connFactorySettings.setConnectionIdleTimeoutMS(20000);Instantieer de
ServiceBusJmsConnectionFactorymet de juisteServiceBusConnectionString.String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>"; ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);Gebruik de
ConnectionFactoryom eenConnectionte maken en vervolgens eenSessionConnection connection = factory.createConnection(); Session session = connection.createSession();of een
JMSContext(voor JMS 2.0-clients)JMSContext jmsContext = factory.createContext();Belangrijk
Hoewel een vergelijkbare naam heeft, zijn een JMS -sessie en Service Bus-sessie volledig onafhankelijk van elkaar.
In JMS 1.1 is de sessie een essentiële bouwsteen van de API waarmee de
MessageProducer,MessageConsumeren deMessagekunnen worden gemaakt. Raadpleeg het JMS API-programmeermodel voor meer informatieIn Service Bus zijn sessies service- en clientconstructies om de FIFO-verwerking in wachtrijen en abonnementen mogelijk te maken.
De JMS-toepassing schrijven
Zodra de Session of JMSContext is geïnstantieerd, kan uw toepassing de vertrouwde JMS-API's gebruiken om zowel beheer- als gegevensbewerkingen uit te voeren. Raadpleeg de lijst met ondersteunde JMS-functies om te zien welke API's worden ondersteund. Hier volgen enkele voorbeeldcodefragmenten om aan de slag te gaan met JMS -
Berichten verzenden naar een wachtrij en onderwerp
// 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);
Berichten ontvangen van een wachtrij
// 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();
Berichten ontvangen van een gedeeld duurzaam abonnement op een onderwerp
// 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();
Samenvatting
In deze handleiding ziet u hoe Java-clienttoepassingen met behulp van Java Message Service (JMS) via AMQP 1.0 kunnen communiceren met Azure Service Bus.
U kunt Service Bus AMQP 1.0 ook gebruiken vanuit andere talen, waaronder .NET, C, Python en PHP. Onderdelen die zijn gebouwd met behulp van deze verschillende talen kunnen berichten betrouwbaar en met volledige getrouwheid uitwisselen dankzij de ondersteuning van AMQP 1.0 in Service Bus.