搭配使用 JAVA 訊息服務 2.0 API 與 Azure 服務匯流排進階
本文說明如何使用熱門 JAVA 訊息服務 (JMS) 2.0 API,透過進階訊息佇列通訊協定 (AMQP 1.0 通訊協定) 與 Azure 服務匯流排進行互動。
注意
僅進階層提供對 JAVA 訊息服務 (JMS) 2.0 API 的支援。>
必要條件
開始使用服務匯流排
本指南假設您已經有服務匯流排命名空間。 如果沒有,請使用 Azure 入口網站建立命名空間和佇列。 如需有關如何建立服務匯流排命名空間和佇列的相關詳細資訊,請參閱透過 Azure 入口網站開始使用服務匯流排佇列。
設定 JAVA 開發環境
若要開發 JAVA 應用程式,您需要設定適當的開發環境 -
- 已安裝 JDK (JAVA 開發套件) 或 JRE (JAVA Runtime Environment) 兩者之一。
- JDK 或 JRE 會新增至組建路徑和適當的系統變數。
- 已安裝 JAVA IDE 以利用 JDK 或 JRE。 例如 Eclipse 或 IntelliJ。
若要深入了解如何在 Azure 上準備適用於 JAVA 的開發人員環境,請利用本指南。
支援哪些 JMS 功能?
下表列出 Azure 服務匯流排目前支援的 Java 訊息服務 (JMS) 功能。 此外也會顯示不支援的功能。
功能 | API | 狀態 |
---|---|---|
佇列 |
|
支援 |
主題 |
|
支援 |
暫時性佇列 |
|
支援 |
暫時性主題 |
|
支援 |
訊息生產者 / JMSProducer |
|
支援 |
佇列瀏覽器 |
|
支援 |
訊息取用者/ JMSConsumer |
目前不支援 noLocal |
支援 |
共用永久性訂閱 |
|
支援 |
非共用永久性訂閱 |
noLocal 目前不受支援,應設定為 false |
支援 |
共用非永久性訂閱 |
|
支援 |
非共用非永久性訂閱 |
noLocal 目前不受支援,應設定為 false |
支援 |
訊息選取器 | 取決於建立的取用者 | 支援 |
傳遞延遲 (排定的訊息) |
|
支援 |
已建立訊息 |
|
支援 |
跨實體交易 |
|
支援 |
分散式交易 | 不支援 |
下載 JAVA 訊息服務 (JMS) 用戶端程式庫
若要利用進階層中可用的所有功能,請將下列程式庫新增至專案的建置路徑:azure-servicebus-jms。 此套件提供一些必要的預設值,例如預先擷取原則值、重新連線原則、Microsoft Entra ID,以及現成的受控識別支援。
注意
若要將 azure-servicebus-jms 新增至建置路徑,請使用專案的慣用相依性管理工具,例如 Maven 或 Gradle。
編寫 Java 應用程式
一旦匯入相依性,就可以透過與 JMS 提供者無關的方式撰寫 JAVA 應用程式。
使用 JMS 連線至 Azure 服務匯流排
若要使用 JMS 用戶端與 Azure 服務匯流排連線,您需要 Azure 入口網站「共用存取原則」中「主連線字串」下提供的連接字串。
具現化
ServiceBusJmsConnectionFactorySettings
ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings(); connFactorySettings.setConnectionIdleTimeoutMS(20000);
使用適當的
ServiceBusConnectionString
具現化ServiceBusJmsConnectionFactory
。String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>"; ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
使用
ConnectionFactory
建立Connection
,然後建立Session
Connection connection = factory.createConnection(); Session session = connection.createSession();
或
JMSContext
(適用於 JMS 2.0 用戶端)JMSContext jmsContext = factory.createContext();
重要
儘管名稱相似,JMS「工作階段」和服務匯流排「工作階段」彼此完全獨立。
在 JMS 1.1 中,「工作階段」是 API 的基本建置區塊,它允許建立
MessageProducer
、MessageConsumer
和Message
本身。 如需詳細資訊,請檢閱 JMS API 程式設計模型在服務匯流排中,工作階段是服務和用戶端建構,用於在佇列和訂用帳戶上啟用 FIFO 處理。
撰寫 JMS 應用程式
一旦具現化 Session
或 JMSContext
,您的應用程式就可以使用熟悉的 JMS API 來執行管理和資料作業。 請參閱支援的 JMS 功能清單,以查看哪些 API 受到支援。 以下是一些開始使用 JMS 的範例程式碼片段 -
傳送訊息至佇列和主題
// 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);
從佇列接收訊息
// 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();
從主題的共用長期訂用帳戶接收訊息
// 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();
摘要
此指南示範了使用 JAVA 訊息服務 (JMS) 的 JAVA 用戶端應用程式,如何透過 AMQP 1.0 與 Azure 服務匯流排互動。
您也可以使用包括 .NET、C、Python 和 PHP 在內的其他語言所撰寫的 Service Bus AMQP 1.0。 使用這些不同的語言撰寫的元件可使用服務匯流排中的 AMQP 1.0 支援確實完整交換訊息。