首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使MSMQ正常工作

无法使MSMQ正常工作
EN

Stack Overflow用户
提问于 2013-02-11 20:51:53
回答 1查看 1K关注 0票数 1

当我试图发送到队列时,我一直收到一个错误。

指定的格式名称不支持所请求的操作。例如,不能删除直接队列格式名称。

我的队列名存储在一个配置文件中,如下所示

"FormatName:Direct=OS:MyComputerName\PRIVATE$\MyQueue“

有两个队列存在,每个队列都有权限集,以便每个人都有完全控制。

SyncUser你可以假设=“每个人”或"My_Domain\operator“

代码语言:javascript
复制
//init the queues
qSync = new MessageQueue(queueName + "-sync")
            {Formatter = new XmlMessageFormatter(new Type[] {typeof (String)})};

qClient = new MessageQueue(queueName + "-client")
            {Formatter = new XmlMessageFormatter(new Type[] { typeof(String) })};

创建队列不会导致任何错误,但是当我调用这个发送函数时会收到错误

代码语言:javascript
复制
**Send(qSync, "This is a message");** //Example

public void Send(MessageQueue queue, string msg)
{
    try
    {
        queue.Send(msg);
    }
    catch (MessageQueueException mqx)
    {
        var e = string.Format("Failed to Send - {0} | {1}", queue.QueueName, mqx.Message);
        OnSynchronizerMonitor(new SyncEvent(e));
    }
}

任何帮助都将不胜感激。

编辑

我的消息似乎是将其发送到远程队列目的地,但应用程序仍然会在发送的每条消息上抛出该错误。如果我在调试时查看MessageQueues (qSync\qClient),那么在使用它之前,这个错误就会出现在几个内部字段中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 21:21:38

我希望有人能为我确认这一点,因为我似乎找不到任何论坛问题或文件支持这一点,但似乎MessageQueue有一个问题,我的事件设置。

我删除了事件调用,简单地硬编码了队列创建,并在我的主进程中发送了它的位置,一切都很好。

我的设置是这样的:

服务--创建处理器、同步器并设置事件。

处理器启动一个线程,其中它处理字符串事务,在成功的进程中,事务需要通过同步器发送,因此处理器触发事件。

同步器已经创建了队列,只是在等待事件被触发以发送消息。

如果有人能弄清楚这是否是一个跨线程的问题,或者只是我的系统中的一个怪癖,我们将不胜感激。

**经过更多的研究和一些尝试和错误,似乎我得到了错误,因为交叉线程复杂的事件。我的猜测是,这是一个类似的问题,因为UI对象是从不同的线程更新的,而不是在这个线程上创建的。这个错误本质上是一个所有权问题。但是消息仍然在传递,但是队列抱怨它的原始所有者不是发起调用的那个人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14820630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档