为什么Jmeter的JMS Publisher会为ConnectionFactory生成NameNotFoundException?

问题描述 投票:0回答:2

我正在尝试使用 Jmeter 的 JMS Publisher 将消息发布到 IBM MQ 队列,但是当我运行测试时,JMS Publisher 失败并返回以下错误。

IBM MQ 9.3.2.0

NameNotFoundException

这是我用来定义 ConnectionFactory 的发布者配置和 .bindings 文件。

JMS Publisher Config

ConnectionFactory/ClassName=javax.jms.ConnectionFactory
ConnectionFactory/FactoryName=com.ibm.mq.jms.MQConnectionFactoryFactory
ConnectionFactory/RefAddr/0/Content=QM1
ConnectionFactory/RefAddr/0/Type=queueManager
ConnectionFactory/RefAddr/1/Content=127.0.0.1
ConnectionFactory/RefAddr/1/Type=host
ConnectionFactory/RefAddr/2/Content=1414
ConnectionFactory/RefAddr/2/Type=port
ConnectionFactory/RefAddr/3/Content=DEV.APP.SVRCONN
ConnectionFactory/RefAddr/3/Type=channel
ConnectionFactory/RefAddr/4/Content=SYSTEM.ADMIN.SVRCONN
ConnectionFactory/RefAddr/4/Type=transportType
MyTestQueue/ClassName=com.ibm.mq.jms.MQQueue
MyTestQueue/FactoryName=com.ibm.mq.jms.MQQueueFactory
MyTestQueue/RefAddr/0/Content=DEV.QUEUE.1
MyTestQueue/RefAddr/0/Type=name
MyTestQueue/RefAddr/1/Content=queue:///DEV.QUEUE.1
MyTestQueue/RefAddr/1/Type=address
jmeter jms ibm-mq jndi
2个回答
0
投票

根据JMeter文档

JMeter 包括 JMS API jar,但不包括 JMS 客户端实现。如果你想运行 JMS 测试,你需要从 JMS 供应商处下载合适的 jar

有关安装其他 jar 的详细信息,请参阅 JMeter Classpath 部分。

因此,您需要在 JMeter 安装的“lib”文件夹中安装适当版本的 com.ibm.mq.allclient 库。

连接工厂应该是

com.ibm.msg.client.jms.JmsConnectionFactory

更多信息:IBM MQ 教程:了解如何使用 JMeter 进行测试


0
投票

您没有描述如何创建 .bindings 文件,显然不是使用 JMSAdmin。 在您选择的配置目录中创建两个文件:

  1. JMSAdmin.config(模板可在mq-install-dir\java中):
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:///C:/Users/Stage/Downloads/JNDI-Directory
SECURITY_AUTHENTICATION=none
  1. whatever.scp:
def qcf(ConnectionFactory) qmanager(QM1) transport(client) channel(DEV.APP.SVRCONN) hostname(127.0.0.1) port(1414)
def q(MyTestQueue) queue(DEV.QUEUE.1)
end

因为您的队列管理器在 JMeter 本地,您也可以使用本地绑定(无网络)并像这样定义 qcf:

def qcf(ConnectionFactory) qmanager(QM1)

所有参数都在“JMS 对象的 IBM MQ 类的属性”一章中的 MQ 文档中进行了描述。

删除目标 jndi 目录中的 .bindings 文件,然后执行:

"<mq-install-dir>\java\bin\JMSAdmin" < whatever.scp

喜欢

"C:\Program Files\IBM\MQ\java\bin\JMSAdmin" < whatever.scp

您将在配置文件中指定的目录中找到 .bindings。 对于后续调用,要么删除之前的 .bindings,要么使用 alter 命令而不是在 scp 文件中定义。

© www.soinside.com 2019 - 2024. All rights reserved.