从我的应用程序中,我需要查询一些Websphere MQ每队列统计信息(最后消息获取/放置时间,en/dequeued消息数,当前队列深度,连接客户端数).我设法通过PCFAgent获得队列深度,但我有点坚持其余,因为IBM文档相当混乱.
您是否知道可能有用的任何有用的参考(或代码示例)?
由于我们使用 XMS.net(有时似乎放弃侦听队列消息的 Windows 服务)在 IBM 的 Websphere MQ 上遇到了一些麻烦,我们想创建一个简单的应用程序来监视某些队列的深度(或消息的数量)在队列中)能够在队列深度超过某个阈值时提醒某人。该应用程序将由任务调度程序以特定时间间隔启动,并会为 X 队列“读出”它们的队列深度(可能还有一些其他统计信息)。
我们的 Windows 服务正在使用以下代码,我希望我可以为我们的“监控”应用程序重用相同的“知识”。
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
//Read config values
string QueueManager = ConfigurationManager.AppSettings["queuemanager"];
string Channel = ConfigurationManager.AppSettings["channel"];
string Queue = ConfigurationManager.AppSettings["queue"];
string HostIP = ConfigurationManager.AppSettings["host"];
int Port = int.Parse(ConfigurationManager.AppSettings["port"]);
//Create connection
var factoryfactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
var connectionfactory = factoryfactory.CreateConnectionFactory();
connectionfactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, QueueManager);
connectionfactory.SetStringProperty(XMSC.WMQ_HOST_NAME, HostIP);
connectionfactory.SetIntProperty(XMSC.WMQ_PORT, Port);
connectionfactory.SetStringProperty(XMSC.WMQ_CHANNEL, Channel);
connectionfactory.SetIntProperty(XMSC.WMQ_BROKER_VERSION, XMSC.WMQ_BROKER_V2);
connectionfactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
Console.WriteLine("Creating connection");
var connection = connectionfactory.CreateConnection();
connection.ExceptionListener = new ExceptionListener(OnXMSExceptionReceived);
//Create a_session
Console.WriteLine("Creating sessions");
var session = …
Run Code Online (Sandbox Code Playgroud) 我有一个 Java 客户端,它通过 10 个连接连接到 MQ。这些在 Java 客户端运行期间保持打开状态。对于每个线程,我们创建一条消息,创建一个会话,发送消息并关闭会话。我们正在使用 Spring CachingConnectionFactory 并且 sessionCacheSize 为 100。我们的 MQ 工程团队告诉我们,我们的队列管理器的最大连接数为 500,我们已经超过了这个值。QM.ini 文件具有:
maxChannels=500
maxActiveChannels=256
maxHandles=256
Run Code Online (Sandbox Code Playgroud)
我在 MQ 资源管理器中观察到,队列上的打开输出计数保持静态为 10,但是如果我们跨 2 个队列进行负载平衡,则每个队列都是 10,即使我们仍然只有 10 个连接。那么我想知道的是 jms 连接和会话在 MQ 术语中等同于什么?
我确实认为连接等同于活动通道而会话是句柄,因此当我们打开(和关闭)的会话数量达到数百或数千时,我们可能会超过句柄,而我们只有 10连接。尽管与此相反,IBM 的技术说明“ JMS 连接工厂的连接池和会话池设置说明”中的以下片段表明最大通道应该大于最大会话,但是我们永远不知道这一点,因为它取决于负载(除非这应该大于 sessionCacheSize?)。
每个会话代表一个到队列管理器的 TCP/IP 连接。使用此处提到的设置,最多可以有 100 个 TCP/IP 连接。如果您正在使用 WebSphere MQ,那么将位于 qm.ini 文件中的队列管理器的 MaxChannels 设置调整为一个大于连接到队列的每个 JMS 连接工厂的最大可能会话数总和的值很重要经理。
任何关于如何最好地配置 MQ 的帮助将不胜感激。
我遇到了一个非常有线的问题.我已成功安装Websphere MQ
在我的Windows机器上,并希望创建QManager
和队列以连接到远程Qmanager
服务器.我已经创建了一个QManager,如下图所示.但是,当我尝试为此创建队列时QManager
,我找不到IBM教程中提到的任何扩展按钮.我已经尝试使用MQSC创建一个队列但是当我runmqsc
在管理员用户的命令提示符下运行时,它显示AMQ8135: Not Authorized
错误!
我刚刚用centos创建了一个VM vagrant,使用Miniconda安装了python2.7和pip,使用pip安装了pymqi,创建了一个测试python文件,看看我的pymqi安装是否正确:
import pymqi
print "hello..."
Run Code Online (Sandbox Code Playgroud)
但我得到了这个:
[vagrant@localhost projects]$ python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
import pymqi
File "/home/vagrant/miniconda2/lib/python2.7/site-packages/pymqi/__init__.py", line 109, in <module>
import pymqe, CMQC, CMQCFC, CMQXC
ImportError: libmqic_r.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我寻找那个文件:
[vagrant@localhost projects]$ find /opt/mqm/ -name 'libmqic_r.so'
/opt/mqm/lib/compat/libmqic_r.so
/opt/mqm/lib/libmqic_r.so
/opt/mqm/lib64/compat/libmqic_r.so
/opt/mqm/lib64/libmqic_r.so
Run Code Online (Sandbox Code Playgroud)
谢谢,感谢您的帮助。
我编写了一个程序来将消息放入 MQ 。当我没有 SSL 配置时它工作正常。如果我在 QueueManager 和 Channel 中配置 SSL,总是得到 An MQException发生:完成代码 2,原因 2400 MQJE011:套接字连接尝试被拒绝。尝试使用不同的密码套件 请告知如何解决。
SSL 属性:
com.ibm.mq.MQEnvironment.sslCipherSuite = "TLS_RSA_WITH_AES_256_GCM_SHA384";
System.setProperty("javax.net.ssl.trustStore", "D:/keystore/testKS.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "12345678");
System.setProperty("javax.net.ssl.keyStore", "D:/keystore/testKS.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "12345678");
Run Code Online (Sandbox Code Playgroud) RabbitMQ是点对点还是pub-sub?还是两者都取决于配置选项?
我一直在看配置,它们似乎都支持点对点模型而不是pub-sub。即消息一旦被消费就从队列中删除,并且不能被第二个消费者使用。
我有一个问题,即偶尔会从Q中读取一条消息.我正在使用.NET包装器为MQSeries(amqmdnet.dll)并使用Win Service读取消息.
Here's how I do it with VB.NET:
'QManager
Dim properties As Hashtable = New Hashtable(4)
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT)
properties.Add(MQC.CHANNEL_PROPERTY, channelName)
properties.Add(MQC.HOST_NAME_PROPERTY, iPAddress)
properties.Add(MQC.PORT_PROPERTY, port)
QManager = New MQQueueManager(queueManagerName, _
properties)
'Q itself
getMessageOptions.Options = _
MQC.MQGMO_FAIL_IF_QUIESCING Or _
MQC.MQGMO_WAIT Or _
MQC.MQGMO_SYNCPOINT
getMessageOptions.WaitInterval = 1000 ' read from config
Dim locker As New Object
System.Threading.Monitor.Enter(locker)
Q.Get(message, getMessageOptions)
QManager.Commit()
System.Threading.Monitor.Exit(locker)
Run Code Online (Sandbox Code Playgroud)
我听说Q.Get(message,getMessageOptions)使消息对其他读者不可用,QManager.Commit反过来只是从Q中删除消息(类似于.NET Peek&Dequeue).这本身应该消除对Monitor的需求.
在我的Win Service中,多个线程读取Q并且我们怀疑由于轮询间隔较低(100ms或更短),包装器没有足够的时间来更新消息的"Read"标志,因此它被多次拾取通过重叠线程.历史上,相同的消息最多可读取四次.
在增加轮询间隔之前,我想确定我是否以正确的方式做事.任何人都可以用我的方法建议任何问题吗?
谢谢.
我正在做一个 IBM webpshere 项目,并且在这个项目中重新安装了 IBM MQ,现在,我们需要使用 Jmeter 向 IBM MQ 发送消息,
有谁知道如何在 Jmeter 中为 IBM MQ 消息测试创建测试计划?链接和测试计划是首选。
注意,IBM MQ 与标准 JMS 有点不同,它提供了主机、队列管理器、服务器通道、端口和队列名称,我们如何在 Jmeter 中配置它?
提前致谢。
我需要帮助,我有以下问题:
\n\nAMQ9776: Channel was blocked by userid \n\nEXPLANATION: \nThe inbound channel 'TEST1.SRVCONN' was blocked from address '10.0.2.4' \nbecause the active values of the channel were mapped to a userid which should \nbe blocked. The active values of the channel were 'MCAUSER(mqm) CLNTUSER(mqm)'.\n
Run Code Online (Sandbox Code Playgroud)\n\n我有以下权威记录:
\n\nDISPLAY CHLAUTH(*)\n 37 : DISPLAY CHLAUTH(*)\nAMQ8878: Ver detalles de registro de autenticaci\xc3\xb3n de canal.\n CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP)\n ADDRESS(*) USERSRC(CHANNEL)\n\nAMQ8878: Ver detalles de registro de autenticaci\xc3\xb3n de canal.\n CHLAUTH(TEST1.SRVCNN) TYPE(ADDRESSMAP)\n ADDRESS(10.0.2.4) USERSRC(CHANNEL)\n\nAMQ8878: Ver detalles de registro …
Run Code Online (Sandbox Code Playgroud)