Jms 使用Jmeter向MQ发送消息

Jms 使用Jmeter向MQ发送消息,jms,jmeter,ibm-mq,performance-testing,Jms,Jmeter,Ibm Mq,Performance Testing,我想使用Jmeter向远程IBM MQ发送消息以进行性能测试。我经历了这一切。但它需要特定于JNDI的详细信息,如QueueConnection工厂、JNDI名称请求队列、初始上下文工厂和提供者URL。而我拥有的queu详细信息是Qmanager、Qname、主机名、通道、端口,如本文共享的代码所示。这些属性有什么关系吗?我可以使用我拥有的队列详细信息配置Jmeter JMS测试吗 提前感谢。您给出的第一个链接使用Java JMS/MQ进行了描述,第二个链接显示Java MQ(非JMS) JMS

我想使用Jmeter向远程IBM MQ发送消息以进行性能测试。我经历了这一切。但它需要特定于JNDI的详细信息,如QueueConnection工厂、JNDI名称请求队列、初始上下文工厂和提供者URL。而我拥有的queu详细信息是Qmanager、Qname、主机名、通道、端口,如本文共享的代码所示。这些属性有什么关系吗?我可以使用我拥有的队列详细信息配置Jmeter JMS测试吗


提前感谢。

您给出的第一个链接使用Java JMS/MQ进行了描述,第二个链接显示Java MQ(非JMS)

JMS只是一个抽象层。简单地说,JMS就像给所有东西取了一个昵称。QCF(QueueConnectionFactory)只是一个对象,它具有连接到队列管理器的所有信息

i、 e

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,你有没有找到一个简单的方法?提前谢谢!曼迪,我没有找到任何办法让它工作。而且,这在我的项目中不是必需的,所以停止寻找解决方案。Ayushi,非常感谢您的回复。顺便说一句,我能够使这项工作使用中提供的指导。唯一的补充是,我必须将WebSphereMQ安装中的所有MQ JAR复制到JMeter/lib中。
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();
}