[英]What are the minimum requirements for writing a Java client for MQSeries?
我需要用Java編寫一個簡單的MQSeries客戶機。
客戶端只需連接到隊列並提取下一條消息即可。
我在幾年前就已經做到了,並擁有所有示例代碼等。
我只需要記住以下三個jar文件:
我一直在閱讀,很多人都在談論屬性文件,但是根據我過去的經驗,我對此沒有任何回想。
依此類推,我的問題是:
開發,測試並最終部署一個簡單的MQSeries客戶機,我在系統上所需的絕對最低限度是多少?
在哪里可以找到(下載)這些東西?
注意:這個問題是有關,但不一樣的這一個。
問題的答案取決於您是否要將結果代碼放入生產環境。 您可以獲取一些jar文件,並將它們包含在CLASSPATH中,然后使其工作。 實際上,通過v7中的重新包裝,罐子的數量已經減少了。 但是,如果沒有完整的客戶端安裝,則IBM不支持它。
這是為什么? 完整安裝包括診斷工具,支持代碼,NLS支持以及收集所有“必須收集”信息以打開故障單的功能。 如果僅獲取幾個jar文件,則您將無法獲得其他功能,因此如果出現問題,則沒有供應商支持。
WMQ v7客戶端安裝作為SupportPac MQC7提供,可以免費下載。
使用Java手冊中提供了基本Java和JMS的jar文件和CLASSPATH設置。
即使在v6服務器上,也要使用v7客戶端。 向后兼容。 在v7.0中,Java / JMS已全部重寫,您只需要手冊中列出的jar。
另外,有人提到了etclient jar。 那是擴展事務客戶端,請注意,這會產生QMgr的全部許可費用。 僅在執行兩階段提交(在同一工作單元中使用WMQ和另一個資源管理器進行XA)並且不使用WebSphere App Server或Message Broker時才需要它。 例如,您要使用JBoss,MQ和數據庫進行TPC,則需要etclient jar文件並支付完整的WMQ許可證的費用。 如果您不進行XA事務,則不需要它。
好的,看起來您需要我在問題中提到的三個jar以及一個屬性文件。
除非您已經可以訪問這些東西,否則我想弄明白的唯一方法是從IBM下載並安裝MQSeries的FULL試用版:
http://www.ibm.com/developerworks/downloads/ws/wmq/
如果該鏈接隨着時間的流逝而消失,您也可以通過僅訪問www.ibm.com並從“支持與下載”->“下載”->“試用和演示”中選擇菜單,然后選擇“ WebSphere MQ”來找到它。從列表中。
安裝完成后,將您需要的所有jar保存在安裝發生的java / lib文件夾中。 這個版本的Jar與我上面提到的jar不同,我懷疑是因為版本不同。
該屬性文件未隨安裝一起安裝(也許新版本不需要此文件),但可以在此處找到。
這是另一種方式
使用三個jar文件:
com.ibm.mq.jar
com.ibm.mqetclient.jar
com.ibm.mqjms.jar
這是一個將讀取MQ消息的代碼示例-
import com.ibm.mq.*; // Include the WebSphere MQ classes for Java package
public class MQSample
{
private String qManager = "your_Q_manager"; // define name of queue
// manager to connect to.
private MQQueueManager qMgr; // define a queue manager
// object
public static void main(String args[]) {
new MQSample();
}
public MQSample() {
try {
// Create a connection to the queue manager
qMgr = new MQQueueManager(qManager);
// Set up the options on the queue we wish to open...
// Note. All WebSphere MQ Options are prefixed with MQC in Java.
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF |
MQC.MQOO_OUTPUT ;
// Now specify the queue that we wish to open,
// and the open options...
MQQueue system_default_local_queue =
qMgr.accessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE",
openOptions);
// Define a WebSphere MQ message buffer to receive the message into..
MQMessage retrievedMessage = new MQMessage();
// Set the get message options...
MQGetMessageOptions gmo = new MQGetMessageOptions(); // accept the defaults
// same as MQGMO_DEFAULT
// get the message off the queue...
system_default_local_queue.get(retrievedMessage, gmo);
// And prove we have the message by displaying the UTF message text
String msgText = retrievedMessage.readUTF();
System.out.println("The message is: " + msgText);
// Close the queue...
system_default_local_queue.close();
// Disconnect from the queue manager
qMgr.disconnect();
}
// If an error has occurred in the above, try to identify what went wrong
// Was it a WebSphere MQ error?
catch (MQException ex)
{
System.out.println("A WebSphere MQ error occurred : Completion code " +
ex.completionCode + " Reason code " + ex.reasonCode);
}
// Was it a Java buffer space error?
catch (java.io.IOException ex)
{
System.out.println("An error occurred whilst writing to the message buffer: " + ex);
}
}
} // end of sample
從此SO答案中獲取的代碼。
自從我也這樣做以來已經有一段時間了,IBM也提供了直接使用mqseries和JMS api的java api,這是它的包裝。
轉到此處,它們在Java中有很多示例http://www304.ibm.com/jct01005c/isv/tech/sampmq.html
為了進行測試,您將需要下載並設置一個MQseries服務器,或者它們可能足夠友好,可以在真實服務器上設置一個測試隊列。
無論如何,當您從IBM的網站(試用版)下載MQseries服務器時,該服務器應包含您需要的jar。
我將深入研究MQSeries的JMS api,以便您可以遠離實際使用mqseries api。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.