使用Jmeter向MQ发送消息

时间:2013-05-31 07:48:24

标签: jms jmeter ibm-mq performance-testing

我想使用Jmeter将消息发送到远程IBM MQ进行性能测试。我经历了这个link。但它需要JNDI特定的细节,如QueueConnection Factory,JNDI Name Request队列,Initial Context Factory&提供者URL。我拥有的queu详细信息是Qmanager,Qname,hostname,channel,port,在此link中共享的代码中给出。这些属性有任何关系吗?我可以使用我拥有的队列详细信息配置Jmeter JMS测试吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您提供的第一个链接使用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();
}

答案 1 :(得分:0)

也可以通过beanshell完成。您可以通过api直接访问队列管理器,也可以通过jms绑定公开队列。第一个更简单,不需要安装MQ客户端。