我想使用Jmeter將消息發送到遠程IBM MQ進行性能測試。我經歷了這個link。但它需要JNDI特定的詳細信息,如QueueConnection Factory,JNDI Name請求隊列,初始上下文工廠&提供程序URL。而我的queu的詳細信息是Qmanager,Qname,主機名,通道,端口在這link共享的代碼中給出。這些屬性是否有任何關係?我可以使用隊列詳細信息配置Jmeter JMS測試嗎?使用Jmeter將消息發送到MQ
在此先感謝。
我想使用Jmeter將消息發送到遠程IBM MQ進行性能測試。我經歷了這個link。但它需要JNDI特定的詳細信息,如QueueConnection Factory,JNDI Name請求隊列,初始上下文工廠&提供程序URL。而我的queu的詳細信息是Qmanager,Qname,主機名,通道,端口在這link共享的代碼中給出。這些屬性是否有任何關係?我可以使用隊列詳細信息配置Jmeter JMS測試嗎?使用Jmeter將消息發送到MQ
在此先感謝。
您給出的第一個鏈接使用Java JMS/MQ進行了描述,第二個鏈接顯示了Java MQ(非JMS)。
JMS只是一個抽象層。簡而言之,JMS就像是給所有事物一個綽號。 QCF(QueueConnectionFactory)只是一個具有連接到隊列管理器的所有信息的對象。
即
DEFINE QCF(myQCF) QMANAGER(MQWT1) CHANNEL(TEST.CHL) HOSTNAME(127.0.0.1) PORT(1415) TRANSPORT(CLIENT) FAILIFQUIESCE(YES)
JMS隊列僅僅是一個綽號MQ隊列。
DEFINE Q(test.q) QUEUE(TEST.Q1) QMANAGER(MQWT1) TARGCLIENT(JMS) FAILIFQUIESCE(YES)
因此,在您的JMS代碼,您只需簡單地引用您的QCF(即myQCF)和JMS隊列(即test.q),你是好去。
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, ""file:/C:/JNDI-Directory");
try
{
Context ctx = new InitialContext(env);
QueueConnectionFactory cf = (QueueConnectionFactory) ctx.lookup("myQCF");
Queue q = (Queue) ctx.lookup("test.q");
}
catch (NamingException e)
{
System.err.println(e.getLocalizedMessage());
e.printStackTrace();
}
它也可以通過beanshell來完成。您可以通過API直接訪問隊列管理器,也可以通過jms綁定公開隊列。第一個更簡單,不需要安裝MQ客戶端。
Ayushi,你有沒有找到一個簡單的方法來完成這項工作?提前致謝! – mandy
曼迪,我沒有找到任何方法使它工作。而且,這在我的項目中不再需要,因此不再尋找解決方案。 – Ayushi
Ayushi,非常感謝您的回覆。順便說一下,我可以使用[鏈接](http://www.ibm.com/developerworks/websphere/library/techarticles/0808_vandekuil/0808_vandekuil.html)中提供的說明完成這項工作。唯一的補充是我必須將所有來自Websphere MQ安裝的MQ jar複製到JMeter/lib中。 – mandy