草庐IT

c# - CPU 未充分利用。由于阻塞 I/O?

我正在尝试找出未充分利用CPU的C#服务器应用程序的瓶颈所在。我认为这可能是由于磁盘I/O性能不佳造成的,与应用程序本身无关,但我无法从这个假设中得出事实。应用程序从本地MSMQ队列读取消息,对每条消息进行一些处理,并在处理完消息后,将响应消息发送到另一个本地MSMQ队列。我正在使用异步循环从队列中读取消息,尽可能快地将它们从队列中取出并使用Task.Run调度它们进行处理以启动每个消息的处理(并且不要在此Task.Run上等待..只是附加一个延续只会在它上面出错以记录错误)。每条消息都是并发处理的,即无需等待消息完全处理后再处理下一条消息。在消息处理结束时,我正在使用MessageQ

c# - C# 中的 MSMQ COM API

从C#使用MSMQManagement的最佳方式是什么?当远程机器断开连接时,我需要能够查看和清除本地传出队列。显然有些用户可以通过COMAPI执行此操作,但在COM引用选项卡中,我没有其他网站/博客/帖子提到的“MicrosoftMessageQueue3.0对象库”(也没有任何类似的内容)。我在机器上搜索了Interop.MSMQ.dll,但也找不到。我们使用VS2008并在Windows764位上运行。我错过了什么?是否有其他机制可以通过“正常”托管类来实现这一点?谢谢 最佳答案 项目+添加引用,浏览选项卡。导航到c:\win

c# - 以编程方式在 MSMQ 中添加私有(private)队列

我有超过20个队列的列表需要添加为MSMQ中的专用队列。有没有办法用命令行C#编程如果有一种方法可以使用某种脚本或.net编程,那么我可以添加它而无需手动输入并导致拼写错误。请告诉我。谢谢 最佳答案 usingSystem.Messaging;//...voidCreateQueue(stringqname){if(!MessageQueue.Exists(qname))MessageQueue.Create(qname);}您只能在本地计算机上创建专用队列。有关详细信息,请参阅:CreatingQueues

c# - MSMQ Receive() 方法超时

我刚才的原始问题是MSMQSlowQueueReading,但是我已经从那里取得了进步,现在我认为我对问题的了解更清楚了。我的代码(实际上是我正在使用的开源库的一部分)如下所示:queue.Receive(TimeSpan.FromSeconds(10),MessageQueueTransactionType.Automatic);正在使用Messaging.MessageQueue.Receive函数和队列是一个MessageQueue。问题如下。上面的代码行将在指定的超时时间(10秒)内被调用。Receive(...)函数是一个阻塞函数,应该阻塞直到消息到达队列,届时它将返回。如果

c# - IIS 中的 WCF,在工作组模式下使用 MSMQ

我一直在试用MSMQ和WCF,但我似乎无法让它正常工作。通过使用WCF和服务引用,我已经让客户端(向队列发送消息)正常工作。执行此操作的代码或多或少是这样的:staticvoidMain(string[]args){varclient=newMsmqServiceReference.MsmqContractClient();client.SendMessage("TEST");client.Close();Console.ReadKey();}其中MsmqContractClient是我添加服务引用时由visualstudio生成的代理。app.config中的端点指向一个msmque

c# - MSMQ 一个(队列)到多个(监听器)场景

我有这样的场景:一个客户端将一条消息发送到一个msmq队列实例中,并且有3个进程在监听这个队列。我希望能够让这些实例中的每一个都选择不同的消息并进行处理。我知道这是队列的常见使用场景,我已经使用MSMQ、.NET和C#编写了工作代码。但是我想知道msmq是否是我在这里的最佳选择-文档明确指出MSMQ用于“一对一”通信,这意味着不应该有一个以上的监听器。这让我想知道,我正在为我的用例做正确的解决方案吗?或者反过来,我是否必须为每个监听器创建一个队列并在工作流的前面部分分发消息?非常感谢提供指向演示MSMQ在此类场景中的用法的工作示例的链接。谢谢 最佳答案

c# - 不在 NServiceBus 中自动创建队列

我正在运行NServiceBus3.0.0rc2,但是当我启动应用程序(作为本地管理员)而没有预先创建MSMQ时,它出现以下错误:Thequeuedoesnotexistoryoudonothavesufficientpermissionstoperformtheoperation.使用NServiceBus2.6时不会发生这种情况。下面是我的配置:varbus=Configure.With().Log4Net().NinjectBuilder().XmlSerializer().DefiningCommandsAs(t=>typeof(ICommand).IsAssignableFr

C#。 MSMQ . 单条消息的最大尺寸

使用msmq我想发送一条消息(将近1GB)。我想发送字节数组。但我只能发送4MB。如何我可以绕过这个限制? 最佳答案 如您所知,MSMQ中消息的最大大小为4Mb,最好采用其他解决方案。解决方案:如果你想传输超过这个大小的数据,你将不得不削减它在发送端分成block,并在接收端重新组合。为什么MSMQ消息有4MB的限制?查看this博客。如何使用Microsoft消息队列发送大于4MB的文件?here 关于C#。MSMQ.单条消息的最大尺寸,我们在StackOverflow上找到一个类似的

c# - 消息在进行事务处理时未到达 MSMQ

我在本地机器上创建了一个私有(private)MSMQ。我正在使用以下C#代码将消息发送到队列。当我将队列更改为事务性队列时,消息未到达MSMQ。但是,在Send方法中没有抛出异常。我需要进行哪些更改才能使其正常工作?usingSystem;usingSystem.Messaging;usingSystem.Data;publicpartialclass_Default:System.Web.UI.Page{//Sharingviolationresultedfromqueuebeingopenalreadyforexclusivereceive.MessageQueuehelpReq

c# - 无法确定具有指定格式名称的队列是否存在

执行以下代码时出现异常。有什么想法吗?stringqueueName="FormatName:Direct=TCP:1.1.1.1\\Private$\\test";MessageQueuequeue;if(MessageQueue.Exists(queueName))queue=newSystem.Messaging.MessageQueue(queueName);elsequeue=MessageQueue.Create(queueName);queue.Send(sWriter.ToString());编辑:这是异常消息和堆栈跟踪的第一行Cannotdeterminewhethe