问题标签 [msmq-wcf]
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.
c# - MSMQ 和 Unity.Wcf - 服务从不消耗队列
有没有人设法使用 Unity 容器在 WCF 上实现 MSMQ?
我的服务器启动,创建私有队列并公开 mex。我的客户端可以解析服务引用、连接并成功将消息写入队列。然而,服务器从不拾取任何消息并将它们留在队列中未使用。
为了缩小错误来源,我使用标准实现了MSDN 教程ServiceHost
中的 MSMQ 示例应用程序:
并且消息被成功拾取和消费。
但是一旦我使用UnityServiceHost
by Unity.Wcf
:
该服务不消耗任何消息,而这些消息又堆积在队列中。
我浏览了Unity 官方文档(仅作为免费电子书提供)并在 Google 上搜索了任何其他信息,但没有任何成功。
我只能假设要么UnityServiceHost
无法处理 MSMQ,要么我必须为我的UnityContainer
.
有没有人设法让它工作?有什么建议或提示吗?
c# - 在 Windows 应用商店应用程序中使用 MSMQ 的替代方案
我最近发现Windows 应用商店应用程序不支持NetMsmqBinding,有没有其他方法可以实现类似的从平板电脑向主机排队消息的系统?
谢谢!
wcf - 当队列设置为已验证时,如何获取“已收到”的 msmq 消息?
我正在使用 WCF 4.0,该服务托管在 IIS (WAS) 中,并带有 net.msmq 地址。我开始只是通过一个方法发送一个 int 。在我的 web.config 中,我有以下内容。注意-由于其他限制,我无法连接到 AD。即使没有 AD,一个人仍然应该能够使用本地帐户来确保安全。
我记录了 Msmq End2End 事件,它显示 eventID 1 和 5 已记录,但EventID 2 ("Message Received") 没有事件。
如果我取消选中队列属性中的“已验证”,则会记录该事件 - 但这是不可取的,因为那时没有安全性:) 所以这就是我向你们发布消息的原因。
设置了一个本地专用队列,并启用了日记功能。这些都没有消息 - 我也确保 f5 以获得新的结果。我将安全设置为具有完全控制权的 iis 应用程序池用户,并提供网络服务读取/查看权限。我也暂时尝试过让每个人都完全控制,但这也无济于事。我也尝试了一个非事务队列,但这也没有帮助。
该消息没有显示在日志中,也没有记录错误,但也许我没有找到正确的位置。对此的任何指示也会有所帮助。
c# - MSMQ - 我可以查询当前正在处理的消息吗?
我正在将 WCF 与 MSMQ 端点一起使用,并且看到了这个问题中描述的行为- 基本上,虽然服务被限制为一次处理一条消息,但从队列中获取了 2 条消息,其中一条似乎保存在内存中,而另一条则正在处理。
这给监控正在发生的事情带来了问题。我有一个监控页面,它显示哪些作业在队列中,哪些正在处理中,但由于这种行为,有一段时间作业在从队列中取出但尚未开始处理时实际上消失了。我MessageQueue.GetAllMessages()
用来获取当前队列中的消息列表。
我对 MSMQ 不太熟悉,但我假设当一条消息出列时,它会被标记为不可见,这样其他进程就不会将其删除。有没有办法查询这些消息,以便我可以看到它们是什么?
c# - WCF MSMQ - 不同端口上的 SRMP
我有一个通过 MSMQ 将消息推送到 WCF 端点的应用程序。
在开发中,它在使用 MSMQ 协议时运行良好,但在生产中我需要做一个网络跃点。我需要进行设置,以便队列通过特定端口 (22200) 上的 HTTP 推送到 WCF 端点。
我认为这适用于 SRMP,但它不起作用。我的传出 MSMQ 挂起并显示“等待连接”消息。
我已经检查过了,我可以访问正确端口上的 URL。
我如何找出问题所在?
以下是我的客户端应用程序配置:
wcf - WCF 服务未读取队列中的消息
我有一个从消息队列中读取的 WCF 服务。我注意到在我们最新的部署中,队列中有一条尚未阅读的消息。WCF 服务已启动并正在运行,它正在正确地建立与队列的连接(否则我会收到并出错)。
我们最近对我们的代码进行了一些更改,我们想知道这是否相关。对我们来说,服务正在运行但消息没有被读取似乎很奇怪。至少,如果队列中有格式错误的消息,我希望 WCF 会抛出某种错误。
我查看了消息的属性,它说移动次数为零,所以我认为它没有被发送到重试子队列。它只是坐在那里,服务不会读取它。
是否存在 WCF 会忽略队列中的消息的情况?WCF 如何处理格式错误的消息?
对不起,如果这不是很多信息。在这一点上,我只是想了解是什么阻止了消息被处理。
c# - 从 MSMQ 中删除多条消息
我有一项通过 WCF 和 MSMQ 运行的服务。一切正常,但我们有一个要求,即如果在处理一项工作期间发生意外情况,它不应影响其他任何工作。该服务被设计成健壮的,而且确实如此。我们在两年的运营中从未发生过崩溃,但最近我们的客户喜欢终止服务流程并抱怨不止一份工作丢失。
为了进行调查,我添加了一个计时器,它每 200 毫秒跟踪一次队列的内容,并发现了一些意想不到的东西。处理请求时,WCF 从队列中删除多条消息。这是相关事件的 smartinspec 跟踪(中心列中的数字是线程 ID):
它似乎总是在服务进程的某个地方缓冲一条消息。我一直在查看 WCF 文档,但没有找到任何关于这种行为的参考我可以做些什么来防止这种缓冲,或者你可以让我参考一些相关的文章吗?
这是服务类:
这是我的服务配置
.net - 未从名称中带有下划线的队列中提取消息
我QueuedService.TicketingService.svc
在应用程序名称下托管在 IIS中的 WCF 服务QueuedService_1_1
。所以服务的完整 URL 是:
该服务有一个 net.msmq 端点:
我在 MSMQ 中创建了一个名为:
当我调用此服务时,消息被传递到队列,但没有被服务接收。当我在浏览器中点击服务 URL 时,服务会选择消息。
_1_1
IIS 应用程序名称和队列名称中的命名是否存在问题?因为当我在没有_1_1
ie的情况下QueuedService
在 IIS 和 queue named 中托管相同的服务时QueuedService/QueuedService.TicketingService.svc
,它可以工作。
wcf - WCF Net.Msmq 服务偶尔出现故障
我有一个自托管的 WCF 服务(在 Windows 服务内运行)。此服务侦听 MSMQ 上的消息。该服务是 PerCall 和 Transactional,在 Windows 2008 R2、.NET 4.0、MSMQ 5.0 上运行。
每隔几周,该服务将停止处理消息。Windows 服务仍在运行,但 WCF 服务主机本身停止。服务主机出现以下异常:
时间戳:2015 年 3 月 21 日下午 5:37:06 消息:HandlingInstanceID:a26ffd8b-d3b4-4b89-9055-4c376d586268 发生并捕获了“System.ServiceModel.MsmqException”类型的异常。-------------------------------------------------- ------------------------------- 03/21/2015 13:37:06 类型:System.ServiceModel.MsmqException,系统.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 消息:从队列接收消息时出错:事务的操作顺序不正确。(-1072824239,0xc00e0051)。确保 MSMQ 已安装并正在运行。确保队列可用于接收。来源:System.ServiceModel 帮助链接:错误代码:-1072824239 数据:System.Collections.ListDictionaryInternal TargetSite:布尔 TryReceive(System.TimeSpan, System.
搜索特定异常(“事务的操作顺序不正确”)不会产生很多信息。对于如何修复故障服务的大多数建议是在故障事件中重新启动服务主机。
我可以这样做,但我希望有一个已知的可解决此异常的原因和/或是否有更清洁的方法来处理它。
c# - 在 MSMQ 端点上使用消息检查器记录 WCF 请求和响应
我正在开发一个 WCF 服务层,它利用消息检查器来记录请求和回复肥皂消息。
这是检查器,去掉了不相关的代码;
一切都很好,很花哨,直到出现了一个新的业务需求,这将最适合MSMQ,所以我正在实施一个 MSMQ 端点。这里的问题是消息传递是单向的。
即使我构建了一个响应对象,检查员的 BeforeSendReply 方法中的“回复”也将为空,因为不会将任何内容发送回客户端。
目前唯一看似合理的事情是将日志记录从消息检查器转移到我的消息处理器逻辑中,在那里我处理请求并构建响应。如果可能的话,我仍然更喜欢保留我当前的设置。
问题是,虽然看起来不太可能,但“是否可以使用 MSMQ 在检查器的 BeforeSendReply 方法参数中包含回复消息?”。
提前致谢。问候。
编辑 2015.08.27
我已经放弃了使用 Message Inspector 进行日志记录。现在登录我的服务层。这就是我所做的。我仍然愿意接受建议。