Sdílet prostřednictvím


Použití rozhraní API služby Java Message Service 2.0 se službou Azure Service Bus Premium

Tento článek vysvětluje, jak používat oblíbené rozhraní API JMS (Java Message Service) 2.0 k interakci se službou Azure Service Bus přes protokol AMQP (Advanced Message Queueing Protocol) 1.0.

Poznámka:

Podpora rozhraní API služby Java Message Service (JMS) 2.0 je dostupná jenom na úrovni Premium.>

Požadavky

Začínáme se službou Service Bus

V této příručce se předpokládá, že už máte obor názvů služby Service Bus. Pokud ne, vytvořte obor názvů a frontu pomocí webu Azure Portal. Další informace o tom, jak vytvářet obory názvů a fronty služby Service Bus, najdete v tématu Začínáme s frontami služby Service Bus prostřednictvím webu Azure Portal.

Nastavení vývojového prostředí Java

Pokud chcete vyvíjet aplikace v Javě, musíte nastavit příslušné vývojové prostředí –

  • Nainstaluje se sada JDK (Java Development Kit) nebo prostředí JRE (Java Runtime Environment).
  • Sada JDK nebo JRE se přidá do cesty sestavení a příslušných systémových proměnných.
  • Nainstaluje se integrované vývojové prostředí Java pro využití sady JDK nebo JRE. Například Eclipse nebo IntelliJ.

Další informace o tom, jak připravit vývojové prostředí pro Javu v Azure, najdete v této příručce.

Jaké funkce JMS jsou podporované?

Následující tabulka uvádí funkce JMS (Java Message Service), které služba Azure Service Bus aktuálně podporuje. Zobrazuje také nepodporované funkce.

Funkce rozhraní API Stav
Fronty
  • JMSContext.createQueue( String queueName)
Podporuje se
Témata
  • JMSContext.createTopic( String topicName)
Podporuje se
Dočasné fronty
  • JMSContext.createTemporaryQueue()
Podporuje se
Dočasná témata
  • JMSContext.createTemporaryTopic()
Podporuje se
Producent zpráv /
JMSProducer
  • JMSContext.createProducer()
Podporuje se
Prohlížeče front
  • JMSContext.createBrowser(fronta fronty)
  • JMSContext.createBrowser(fronta fronty, string messageSelector)
Podporuje se
Příjemce zprávy/
JMSConsumer
  • JMSContext.createConsumer( cíl cíle)
  • JMSContext.createConsumer( cíl, string messageSelector)
  • JMSContext.createConsumer( Cíl, String messageSelector, boolean noLocal)

NoLocal se v současné době nepodporuje.
Podporuje se
Sdílená odolná předplatná
  • JMSContext.createSharedDurableConsumer(téma téma, název řetězce)
  • JMSContext.createSharedDurableConsumer(téma, název řetězce, řetězec messageSelector)
Podporuje se
Zrušení sdílení trvalých předplatných
  • JMSContext.createDurableConsumer(téma tématu, název řetězce)
  • createDurableConsumer(téma, název řetězce, řetězec messageSelector, logická hodnota noLocal)

noLocal se v současné době nepodporuje a měl by být nastavený na false.
Podporuje se
Sdílená non-durable předplatná
  • JMSContext.createSharedConsumer(téma téma, String sharedSubscriptionName)
  • JMSContext.createSharedConsumer(téma, String sharedSubscriptionName, String messageSelector)
Podporuje se
Nesdílené non-durable předplatná
  • JMSContext.createConsumer(Cílová cíl)
  • JMSContext.createConsumer( cíl, string messageSelector)
  • JMSContext.createConsumer( Cíl, String messageSelector, boolean noLocal)

noLocal se v současné době nepodporuje a měl by být nastavený na false.
Podporuje se
Selektory zpráv závisí na vytvořeném příjemci. Podporuje se
Zpoždění doručení (naplánované zprávy)
  • JMSProducer.setDeliveryDelay( long deliveryDelay)
Podporuje se
Zpráva byla vytvořena.
  • JMSContext.createMessage()
  • JMSContext.createBytesMessage()
  • JMSContext.createMapMessage()
  • JMSContext.createObjectMessage( Serializable – objekt)
  • JMSContext.createStreamMessage()
  • JMSContext.createTextMessage()
  • JMSContext.createTextMessage( Text řetězce)
Podporuje se
Transakce mezi entitami
  • Connection.createSession(true, Session.SESSION_TRANSACTED)
Podporuje se
Distribuované transakce Nepodporováno

Stažení klientské knihovny JMS (Java Message Service)

Pokud chcete využít všechny funkce dostupné na úrovni Premium, přidejte do cesty sestavení projektu následující knihovnu: azure-servicebus-jms. Tento balíček obsahuje některé nezbytné výchozí hodnoty, jako jsou předběžné načtení hodnot zásad, opětovné připojení zásad, Microsoft Entra ID a podpora spravované identity.

Poznámka:

Pokud chcete přidat azure-servicebus-jms do cesty sestavení, použijte preferovaný nástroj pro správu závislostí pro váš projekt, jako je Maven nebo Gradle.

Kódování aplikací v Javě

Jakmile se závislosti naimportují, dají se aplikace v Javě napsat nezávislou na poskytovateli JMS.

Připojení ke službě Azure Service Bus pomocí JMS

Pokud se chcete připojit ke službě Azure Service Bus pomocí klientů JMS, potřebujete připojovací řetězec, která je k dispozici v zásadách sdíleného přístupu na webu Azure Portal v části Primární připojovací řetězec.

  1. Vytvoření instance instance ServiceBusJmsConnectionFactorySettings

    ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings();
    connFactorySettings.setConnectionIdleTimeoutMS(20000);
    
  2. ServiceBusJmsConnectionFactory Vytvořte instanci příslušného ServiceBusConnectionStringsouboru .

    String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>";
    ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
    
  3. Použijte příkaz ConnectionFactory k vytvoření Connection a následnému Session

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

    JMSContext nebo (pro klienty JMS 2.0)

    JMSContext jmsContext = factory.createContext();
    

    Důležité

    I když se podobá pojmenování, relace JMS a Service Bus Session je zcela nezávislá na sobě.

    V JMS 1.1 je relace základním stavebním blokem rozhraní API, který umožňuje vytváření MessageProducer, MessageConsumera Message samotné. Další podrobnosti najdete v programovacím modelu rozhraní JMS API.

    Ve službě Service Bus jsou relace konstruktorem na straně služby a klienta, které umožňují zpracování FIFO ve frontách a předplatných.

Napsání aplikace JMS

Session Po vytvoření instance může JMSContext vaše aplikace používat známá rozhraní API JMS k provádění operací správy i dat. Informace o podporovaných funkcích JMS najdete v seznamu podporovaných funkcí JMS a zjistěte, která rozhraní API jsou podporovaná. Tady je několik ukázkových fragmentů kódu, které vám pomůžou začít s JMS –

Odesílání zpráv do fronty a tématu

// 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);

Příjem zpráv z fronty

// 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();

Příjem zpráv ze sdíleného odolného předplatného v tématu

// 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();

Shrnutí

Tento průvodce předvádí, jak můžou klientské aplikace v Javě využívající službu Java Message Service (JMS) přes AMQP 1.0 komunikovat se službou Azure Service Bus.

Service Bus AMQP 1.0 můžete použít také z jiných jazyků, včetně .NET, C, Pythonu a PHP. Komponenty vytvořené pomocí těchto různých jazyků můžou spolehlivě a plně věrně vyměňovat zprávy pomocí podpory AMQP 1.0 ve službě Service Bus.