C# MQRC_对象_已_存在错误代码2100
我正在使用IBM WebSphere MQ。每当同时的用户登录到IBM MQ时,当第二个用户来尝试访问他们收到的getqueue时,C# MQRC_对象_已_存在错误代码2100,c#,ibm-mq,C#,Ibm Mq,我正在使用IBM WebSphere MQ。每当同时的用户登录到IBM MQ时,当第二个用户来尝试访问他们收到的getqueue时,2100 0x00000834 MQRC_对象_已存在错误。请提供一些建议 连接到MQ管理器: mqQueueManager = new MQQueueManager(mqQueueManagerName); 打开Put队列: mqPutQueue = mqQueueManager.AccessQueue(mqRequestQueueName, MQC.MQOO_
2100 0x00000834 MQRC_对象_已存在
错误。请提供一些建议
连接到MQ管理器:
mqQueueManager = new MQQueueManager(mqQueueManagerName);
打开Put队列:
mqPutQueue = mqQueueManager.AccessQueue(mqRequestQueueName, MQC.MQOO_INQUIRE |
MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING);
当第二个用户尝试连接时,打开ReplyTo队列会生成错误。第一个用户的动态队列在断开连接时将被删除。第二个用户无法连接,直到第一个用户关闭应用程序:
mqGetQueue = mqQueueManager.AccessQueue(mqModelQueueName, MQC.MQOO_INPUT_SHARED ,
mqQueueManagerName, mqReplyQueueName, "");
您可能未正确指定动态队列名称 为了向开发人员提供最大的灵活性,WebSphere MQ允许在为动态队列选择您想要的确切名称或让WebSphere MQ自动生成唯一名称之间进行选择。如果希望WebSphere MQ为您生成名称,请确保传入的名称足够短,以允许WMQ附加其他字符,并在
DynamicQName
字段中指定星号作为最后一个字符。这在文档中的一个名为的章节中进行了解释,其内容如下:
可以通过以下三种方式指定创建的动态队列的名称:
- 在文件的
字段中提供所需的全名 MQOD结构李>DynamicQName
- 为指定前缀(少于33个字符)
名称,并允许队列管理器生成名称的其余部分。
这意味着队列管理器生成一个唯一的名称,但是
仍然有一些控制(例如,您可能希望每个用户使用
一个特定的前缀,或者你可能想给一个特殊的安全性
分类到名称中带有特定前缀的队列)。使用
使用此方法,请为最后一个非空字符指定星号()
字段的。不要为其指定单个星号() 动态队列名称李>DynamicQName
- 允许队列管理器生成完整的
名称要使用此方法,请在第一行中指定星号(*)
字段的字符位置DynamicQName
要获得预期的行为,请确保为
mqReplyQueueName
传递的值是一个星号(“*
”字符),或者是一个少于33个字符且以星号结尾的字符串。是否尝试创建动态队列?只有在尝试动态创建已存在的队列时,才会发生此错误。检查mqRequestQueueName和mqModelQueueName是否相同。是正确的,我不知道如何清除动态队列,这里mqpreplyQueueName保留动态队列名称mqRequestQueueName和mqModelQueueName不同我检查过。只有当我将其他名称指定为其creatingHi时,动态队列才会出现问题,我解决了动态队列名称mqReplyQueueName->的问题,每次它出现时,我都随机生成一个新的动态队列名称Yes,这是动态队列的预期设计。如果您希望从队列中获取多个应用程序实例,我建议使用永久队列。