问题标签 [system.messaging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb.net - system.messaging 队列在 message.receive 时冻结
这是我第一次使用这个消息传递库并使用一些示例代码来实现它。我第一次运行它时它运行良好,但我突然停止了代码,因为我的解析方法似乎错误。因此,当我重新启动它时,代码冻结在以下行:
消息队列是否可能损坏或什么?我检查了服务器管理器,看起来队列仍然存在,消息数 =1 和以前一样。这是我的其余代码:
编辑:
如何创建队列:
以及如何使用:
并检查它是否是事务性的;
事实并非如此。
c# - 获取 Windows 消息队列中的所有消息时出现零星错误
在 Windows Server 2003 上运行的 C# ASP.NET 3.5 Web 应用程序中,我偶尔会收到以下错误:
引发此错误的代码行是:
whereGlobal.getOutputQueue(mode)
给出了我想从中获取消息的消息队列。
更新:
p>system.messaging - 指定的格式名称不支持请求的操作。例如,不能删除直接队列格式名称
我正在尝试使用 Message 对象将消息发送到队列并收到错误消息
指定的格式名称不支持请求的操作。例如,不能删除直接队列格式名称。
这是代码。
对此的任何帮助表示赞赏。
汤姆
c# - 为什么在 Unity 中使用 system.messaging 会导致未处理的异常?
我有以下简单的代码:
我收到以下错误:
未处理的异常:System.TypeLoadException:无法从程序集“System.Messaging,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”加载类型“System.Messaging.MessageQueue”。
在(包装器托管到本机) System.MonoType:GetMethodsByName (string,System.Reflection.BindingFlags,bool,System.Type)
在 System.MonoType.GetMethods (BindingFlags bindingAttr) [0x00000] in :0
在 Mono.CSharp.MemberCache.AddMethods (BindingFlags bf, System.Type 类型) [0x00000] in :0
在 Mono.CSharp.MemberCache.AddMethods (System.Type 类型) [0x00000] in :0
在 Mono.CSharp.MemberCache..ctor (IMemberContainer 容器) [0x00000] in :0
在 Mono.CSharp.TypeHandle..ctor (System.Type 类型) [0x00000] in :0
在 Mono.CSharp.TypeHandle.GetTypeHandle (System.Type t) [0x00000] in :0
在 Mono.CSharp.TypeHandle.GetMemberCache (System.Type t) [0x00000] in :0
在 Mono.CSharp.TypeManager.MemberLookup_FindMembers (System.Type t, MemberTypes mt, BindingFlags bf, System.String name, System.Boolean& used_cache) [0x00000] in :0
在 Mono.CSharp.TypeManager.RealMemberLookup (System.Type invocation_type, System.Type qualifier_type, System.Type queried_type, MemberTypes mt, BindingFlags original_bf, System.String name, IList most_match) [0x00000] in :0
在 Mono.CSharp.TypeManager.MemberLookup (System.Type invocation_type, System.Type qualifier_type, System.Type queried_type, MemberTypes mt, BindingFlags original_bf, System.String name, IList most_match) [0x00000] in :0
什么可能导致这种情况,我该如何解决?
.net - 使用 MessageEnumerator RemoveCurrent 我如何知道我是否在队列末尾?
在 .NET 上的 MSMQ 中,我使用 MessageEnumerator 来查看队列中的所有消息。我想删除满足特定条件的消息。
当我调用 MoveNext 来单步执行队列时,我会返回一个布尔值来告诉我当前消息是否存在。但是,当我执行 RemoveCurrent 时,我如何知道删除后的当前消息是否存在?是检查 Current 并处理异常的唯一方法吗?
这是一个示例,我使用删除超过一年的消息的简单条件。假设队列是在其他地方创建的并使用 MessageReadPropertyFilter.ArrivedTime = true 设置:
.net - system.messaging 消息未到达
我的消息没有到达目的地。我没有收到错误。即使在接收端打开了日志,它也不会显示在接收端的日志中。目标队列的权限设置为所有人完全控制。目标 msmq 服务的诊断显示 msmq ping 良好。本月早些时候,其他应用程序已成功写入此队列。它显示在我的日志中(发送端)。它没有出现在我端或接收端的死信或交易死信中。我仔细检查了队列名称。我没有发现谷歌点击或其他关于此的问题。我广泛搜索了“system.messaging”问题或“system.messaging”问题,以及其他一些更具体的搜索。
在这种特殊情况下,我使用的是 ActiveX 格式化程序。
c# - 为什么使用 FormatName 发送到远程私有队列时 MessageQueue.Send(Object) 不起作用?
所以……这个让我很困惑。
目标队列位于MSMQ 在工作组模式下运行的ServerA上。该队列是一个非事务性的私有队列,几乎对世界具有完全权限(包括NETWORK SERVICE,但不包括ANONYMOUS LOGON)。
我这样指定队列地址:FormatName:DIRECT=OS:ServerA\private$\targetqueue。
如果我有兴趣发送“即发即弃”式(不需要事务,因为没有其他持久性正在进行),我认为只需调用:
但奇怪的是,消息永远不会到达目标队列,并且启用负源日志(有趣的是,这会导致消息被发送到目标服务器上的死信消息队列)告诉我它是“非事务性消息”。
因此,使用
作品!很难解决这个问题。我错过了什么?
此外,我还看到很多其他人的帖子,他们的类似问题通过给予匿名登录完全权限来解决。在什么情况下这是必要的?授予NETWORK SERVICE访问有些意义,因为这是 MSMQ 本身运行的帐户。如果像我一样在工作组模式下运行,是否有必要将权限分配给每个人,甚至是我的进程运行所在的帐户?
感谢帮助!
c# - 监视 MSMQ 队列
我有一个写入私有 MSMQ 队列的应用程序。我想通过监控队列来监控应用程序是否正常工作。通常我可以使用性能计数器查看队列中的消息数量,但是有一个非常激进的队列读取器。如果我的监控程序依赖于查看队列中的消息,则很有可能它永远不会看到任何内容,因为在我的监控应用程序看到消息之前已经读取了消息。即我担心以下时间表:
鉴于上述情况,虽然队列上有活动(写入和读取),但在监控事物时永远不会有任何活动。
有没有办法查看过去一分钟或一小时内通过的队列项目数?或者其他任何可以让我监控队列的东西?
msmq - MSMQ 消息在到达远程服务器时消失
我必须在同一域中的两台服务器SenderServer (MS Server 2012) 和ReceiverServer之间创建MSMQ消息传递机制 (MS Server 2008 R2)
我在ReceiverServer中创建了一个私有的事务队列 .\private$\receiver
,我将接收(和查看)消息权限授予系统和管理员。
然后,我创建了一个客户端应用程序,它使用以下代码创建消息并将消息转发到队列:
在部署应用程序之前,我在我的机器 (Windows 7) 上对其进行了测试,该机器正确地Direct=OS:ReceiverServer\private$\receiver
使用State:Connected
和创建了传出队列Connection History:Connection is ready to transfer messages
。消息正确地发送到ReceiverServer并放入\private$\receiver
队列中。每条消息的ReceiverServer记录两个事件End2End log
:
- 消息来自网络 (EventId: 4)
- 消息
ID CN=msmq, CN=[mymachinename], CN=Computers, DC=[domain], DC=[other]
已放入队列ReceiverServer\private$\receiver
(EventId:1)
然后我使用相同的代码从SenderServer中使用客户端应用程序。服务器正确地创建了一个传出队列Direct=OS:ReceiverServer\private$\receiver
,我可以看到消息排队并被发送,但我没有在远程State:Connected
ReceiverServer队列中收到它们。如果我检查ReceiverServer的End2End 事件日志,我只会看到第一条消息(消息来自网络(EventId:4)),但该消息未放入队列中。Connection History:Connection is ready to transfer messages
.\private$\receiver
我关闭了两台机器的防火墙,更改了队列的授权设置,并为队列尝试了以下端点:
FormatName:Direct=OS:[IPv6 address]\private$\receiver
FormatName:Direct=TCP:ReceiverServer\private$\receiver
FormatName:Direct=TCP:[IPv6 address]\private$\receiver
没有运气。Microsoft 的故障排除过程和文档非常笼统和简单,因此我决定在这里问,因为对我来说是死胡同。
.net - 队列不存在或您没有足够的权限来执行该操作。通过 MSMQ 发送消息时出现异常
我创建了一个函数来通过 MSMQ 发送消息,但在执行时出现异常。下面是我的功能。
例外:- 队列不存在或您没有足够的权限来执行操作。
此外,我无法在计算机管理下打开消息队列的安全选项卡。请参阅随附的屏幕截图。
我尝试在私有下手动创建消息队列,系统允许我这样做。见下文
下面是 mmc 跨度。