Java Message Service 2.0-API gebruiken met Azure Service Bus Premium

In dit artikel wordt uitgelegd hoe u de populaire Java Message Service (JMS) 2.0-API gebruikt om te communiceren met Azure Service Bus via het AMQP 1.0-protocol (Advanced Message Queueing Protocol).

Notitie

Ondersteuning voor Java Message Service (JMS) 2.0 API is alleen beschikbaar in de Premium-laag.>

Vereisten

Aan de slag met Service Bus

In deze handleiding wordt ervan uitgegaan dat u al een Service Bus-naamruimte hebt. Als u dat niet doet, maakt u een naamruimte en een wachtrij met behulp van de Azure Portal. Zie Aan de slag met Service Bus-wachtrijen via de 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:

  • 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 wordt 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 functies van Java Message Service (JMS) die momenteel door Azure Service Bus worden ondersteund. Er worden ook functies weergegeven die niet worden ondersteund.

Functie API Status
Wachtrijen
  • JMSContext.createQueue( String queueName)
Ondersteund
Onderwerpen
  • JMSContext.createTopic( String topicName)
Ondersteund
Tijdelijke wachtrijen
  • JMSContext.createTemporaryQueue()
Ondersteund
Tijdelijke onderwerpen
  • JMSContext.createTemporaryTopic()
Ondersteund
Berichtproducent /
JMSProducer
  • JMSContext.createProducer()
Ondersteund
Wachtrijbrowsers
  • JMSContext.createBrowser(Wachtrij)
  • JMSContext.createBrowser(wachtrij, tekenreeks messageSelector)
Ondersteund
Message Consumer/
JMSConsumer
  • JMSContext.createConsumer( Doelbestemming)
  • JMSContext.createConsumer( Doelbestemming, Tekenreeks messageSelector)
  • JMSContext.createConsumer( Bestemming, Tekenreeks messageSelector, Booleaanse noLocal)

noLocal wordt momenteel niet ondersteund
Ondersteund
Gedeelde duurzame abonnementen
  • JMSContext.createSharedDurableConsumer(onderwerp, tekenreeksnaam)
  • JMSContext.createSharedDurableConsumer(onderwerp, tekenreeksnaam, tekenreeks messageSelector)
Ondersteund
Niet-gedeelde duurzame abonnementen
  • JMSContext.createDurableConsumer(onderwerp, tekenreeksnaam)
  • createDurableConsumer(Onderwerp, Tekenreeksnaam, Tekenreeks messageSelector, Booleaanse noLocal)

noLocal wordt momenteel niet ondersteund en moet worden ingesteld op false
Ondersteund
Gedeelde niet-duurzame abonnementen
  • JMSContext.createSharedConsumer(Onderwerp, Tekenreeks sharedSubscriptionName)
  • JMSContext.createSharedConsumer(Onderwerp, Tekenreeks sharedSubscriptionName, Tekenreeks messageSelector)
Ondersteund
Niet-gedeelde niet-duurzame abonnementen
  • JMSContext.createConsumer(Bestemming)
  • JMSContext.createConsumer( Doelbestemming, Tekenreeks messageSelector)
  • JMSContext.createConsumer( Bestemming, Tekenreeks messageSelector, Booleaanse noLocal)

noLocal wordt momenteel niet ondersteund en moet worden ingesteld op false
Ondersteund
Berichtkiezers is afhankelijk van de consument die is gemaakt Ondersteund
Bezorgingsvertraging (geplande berichten)
  • JMSProducer.setDeliveryDelay( long deliveryDelay)
Ondersteund
Bericht gemaakt
  • JMSContext.createMessage()
  • JMSContext.createBytesMessage()
  • JMSContext.createMapMessage()
  • JMSContext.createObjectMessage( Serializable object)
  • JMSContext.createStreamMessage()
  • JMSContext.createTextMessage()
  • JMSContext.createTextMessage( Tekenreekstekst)
Ondersteund
Transacties tussen entiteiten
  • Connection.createSession(true, Session.SESSION_TRANSACTED)
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 volgende bibliotheek toe aan het buildpad van het project.

Azure-servicebus-jms

Notitie

Als u de Azure-servicebus-jms wilt toevoegen aan het build-pad, gebruikt u het hulpprogramma voor voorkeursbeheer voor afhankelijkheid voor uw project, zoals Maven of Gradle.

Java-toepassingen coderen

Zodra de afhankelijkheden zijn geïmporteerd, kunnen de Java-toepassingen op een JMS-provideronafhankelijke 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 connection string nodig die beschikbaar is in het gedeelde toegangsbeleid in de Azure Portal onder Primaire verbindingsreeks.

  1. Maak een exemplaar van de ServiceBusJmsConnectionFactorySettings

    ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings();
    connFactorySettings.setConnectionIdleTimeoutMS(20000);
    
  2. Instantieer de ServiceBusJmsConnectionFactory met de juiste ServiceBusConnectionString.

    String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>";
    ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
    
  3. Gebruik de ConnectionFactory om een Connection en vervolgens een te maken Session

    Connection connection = factory.createConnection();
    Session session = connection.createSession();
    

    of een JMSContext (voor JMS 2.0-clients)

    JMSContext jmsContext = factory.createContext();
    

    Belangrijk

    Hoewel een JMS-sessie en Service Bus-sessie op dezelfde manier worden genoemd, zijn ze volledig onafhankelijk van elkaar.

    In JMS 1.1 is sessie een essentiële bouwsteen van de API waarmee de MessageProducer, MessageConsumeren de Message zelf kunnen worden gemaakt. Raadpleeg het JMS API-programmeermodel voor meer informatie

    In Service Bus zijn sessies service- en clientconstruct om FIFO-verwerking in te schakelen voor wachtrijen en abonnementen.

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 over 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

Deze handleiding laat zien 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 met deze verschillende talen zijn gebouwd, kunnen berichten betrouwbaar en met volledige betrouwbaarheid uitwisselen met behulp van de AMQP 1.0-ondersteuning in Service Bus.

Volgende stappen

Voor meer informatie over Azure Service Bus en details over JMS-entiteiten (Java Message Service) raadpleegt u de onderstaande koppelingen: