我认为主要问题是 。
$READ = $MSMQInfo->Open(2,0);
我不确定2,0选项代表什么(我在任何地方都找不到这些选项的参考 - 我从另一个示例中得到了该代码)。查看MSMQQueueInfo.open文档,我可以看到一些选项,但没有数字选项。
非常感谢您的帮助。与MSMQ集成的原因是在系统之间提供临时解决方案,我们的旧系统使用MSMQ,所以我需要有这个接口。
谢谢
$READ = $MSMQInfo->Open(2,0);
我不确定2,0选项代表什么(我在任何地方都找不到这些选项的参考 - 我从另一个示例中得到了该代码)。查看MSMQQueueInfo.open文档,我可以看到一些选项,但没有数字选项。
非常感谢您的帮助。与MSMQ集成的原因是在系统之间提供临时解决方案,我们的旧系统使用MSMQ,所以我需要有这个接口。
谢谢
从这里你已经知道参数是:
Function Open(Access, ShareMode)
他们还说:
可以将访问权限设置为以下之一:
MQ_PEEK_ACCESS:只能查看消息。不能从队列中删除它们。
MQ_SEND_ACCESS:只能向队列发送消息。
MQ_RECEIVE_ACCESS:可以检索(读取和删除)队列中的消息,也可以预览或清除它们。有关限制谁可以从队列中检索消息的信息,请参见 ShareMode 参数的说明。
MQ_PEEK_ACCESS | MQ_ADMIN_ACCESS:只能预览本地传出队列中的消息(读取而不从队列中删除)。
MQ_RECEIVE_ACCESS | MQ_ADMIN_ACCESS:可以检索本地传出队列中的消息(读取并从队列中删除)、预览(读取而不从队列中删除)或清除(删除)。
在 MSDN 的 MQACCESS 文档中,他们为常量提供了数字值:
typedef enum
{
MQ_RECEIVE_ACCESS = 1,
MQ_SEND_ACCESS = 2,
MQ_PEEK_ACCESS = 0x0020,
MQ_ADMIN_ACCESS = 0x0080
} MQACCESS;
第二个参数,ShareMode:
ShareMode指定谁可以访问队列。设置为以下之一:
MQ_DENY_NONE:默认设置。队列对Everyone组中的所有成员都可用。如果Access设置为MQ_PEEK_ACCESS或MQ_SEND_ACCESS,则必须使用此设置。
MQ_DENY_RECEIVE_SHARE:限制可以从队列检索消息的进程。如果另一个进程已经打开了该队列以检索消息,则此调用失败并生成MQ_ERROR_SHARING_VIOLATION(0xC00E0009)错误。仅适用于Access设置为MQ_RECEIVE_ACCESS时。
这些常量是:
Const MQ_DENY_NONE = 0
Const MQ_DENY_RECEIVE_SHARE = 1
确实有点难找,但你可以在这里找到,这不是很可靠的来源,但我相信它是正确的。