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.

Důležité poznámky

Tady je několik důležitých bodů:

  • Podpora rozhraní API JMS 2.0 je dostupná jenom na úrovni Premium a použitím knihovny azure-servicebus-jms.
  • Pokud používáte jiné knihovny JMS než azure-servicebus-jms (například nejnovější qpid-jms-client) pro prémiový obor názvů, pozorujete chování JMS 1.1 a některé funkce JMS 2.0 nemusí fungovat podle očekávání. Knihovna azure-servicebus-jms nevytvoří zámek dodavatele jakéhokoli druhu, protože stále využívá závislost na qpid-jms-client. Všechna rozhraní API, která pracují na qpid-jms-client, fungují i v knihovně azure-servicebus-jms.
  • Azure-servicebus-jms je také opensourcová knihovna. Knihovna azure-servicebus-jms byla vytvořena hlavně tak, aby služba Service Bus dokázala rozlišovat mezi zákazníky, kteří potřebují chování JMS 1.1 (zpětná kompatibilita) a chování JMS 2.0 při práci s oborem názvů Premium. Knihovna azure-servicebus-jms také poskytuje některé nezbytné výchozí hodnoty, jako jsou hodnoty zásad pro předběžné načítání, zásady pro opětovné připojení, Microsoft Entra ID, podpora spravované identity a podpora automatického odstranění při nečinnosti pro entity přímo ze základní nabídky.
  • Následující cesta k balíčku azure-servicebus-jms odkazuje na nejnovější verzi knihovny, která je založená na specifikaci Jakarta Messaging (API specifikace Jakarta.*): Maven Central: com.azure:azure-servicebus-jms. Následující cesta k azure-servicebus-jms představuje poslední verzi knihovny před specifikací Jakarta Messaging (javax.* API): Maven Central: com.microsoft.azure:azure-servicebus-jms.

Požadavky

Začínáme s Service Bus

Příručka předpokládá, že už máte obor názvů pro službu 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ává do sestavovací cesty 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.vytvořitDočasnéTéma()
Podporuje se
Producent zpráv /
JMSProducer
  • JMSContext.createProducer()
Podporuje se
Prohlížeče front
  • JMSContext.createBrowser(fronta)
  • JMSContext.createBrowser(fronta fronty, string messageSelector)
Podporuje se
Příjemce zprávy/
JMSConsumer
  • JMSContext.createConsumer( Destinace destinace)
  • JMSContext.createConsumer(Destination destination, String messageSelector)
  • JMSContext.createConsumer( Cíl, String messageSelector, boolean noLocal)

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

noLocal se v současné době nepodporuje a měl by být nastavený na false.
Podporuje se
Sdílená krátkodobá předplatná
  • JMSContext.createSharedConsumer(téma téma, String sharedSubscriptionName)
  • JMSContext.createSharedConsumer(téma, String sharedSubscriptionName, String messageSelector)
Podporuje se
Nesdílená nedlouhá předplatná
  • JMSContext.createConsumer(Cílová cíl)
  • JMSContext.createConsumer(Destination destination, String messageSelector)
  • JMSContext.createConsumer( Destinace, 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. Selektory služby Service Bus nepodporují klíčová slova LIKE a BETWEEN SQL. Podporuje se
Zpoždění doručení (naplánované zprávy)
  • Metoda 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.vytvořitSezení(true, Session.TRANSAKTOVANÉ_SEZENÍ)
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 poskytuje některé nezbytné výchozí hodnoty, jako jsou hodnoty zásad předběžného načtení, zásady opětovného připojení, Microsoft Entra ID a automatická 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. Vytvořte instanci ServiceBusJmsConnectionFactory s příslušným ServiceBusConnectionString.

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

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

    JMSContext nebo (pro klienty JMS 2.0)

    JMSContext jmsContext = factory.createContext();
    

    Důležité

    Ačkoli mají podobné názvy, relace 'Session' v JMS a 'Session' v Service Bus jsou na sobě zcela nezávislé.

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

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

Napsání aplikace JMS

Jakmile Session nebo JMSContext je vytvořeno, vaše aplikace může používat známá rozhraní API JMS k provádění jak manažerských, tak datových operací. 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 trvalého předplatného na 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.