问题标签 [message-queue]
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.
multithreading - 我可以监控线程的消息队列的大小吗?
我们的应用程序收到来自 DCOM ( 0x80010100
) 的 System Call Failed RPC 错误,我们怀疑目标线程的消息队列已满(尽管我不相信这是真的)。我知道队列仅限于10,000
消息,我想看看在常见情况下我们是否接近这个数字。有没有办法监控线程的消息队列的大小?
我发现的最有希望的选项是GetQueueStatus
,但这不包括队列中的消息数量,只包括它们的类型。
java - XmlBlaster 的优点和缺点
您是否正在使用 XmlBlaster?你怎么看待这件事?它的弱点和优势是什么?
logging - 所有消息的 JMS 队列日志记录/浏览(队列的不可见使用者)(OpenJMS)
你知道,如果有一些很好的方法来浏览/记录 JMS 队列?(我正在使用 OpenJMS)
对于主题,我可以再添加一个消费者,仅此而已,但是对于队列,我还没有完成解决方案。我想记录某些队列和主题中的所有消息,而不会将它们从队列中“弹出”(以便记录器可以浏览“不可见”的队列)。
使用javax.jms.QueueBrowser我可以获得队列的快照,但这似乎没有提供“侦听器解决方案” - 一次又一次地读取无限循环队列上的所有消息,并希望没有消息碰巧被写入并在我的快照之前消耗 - 这听起来不是一个好的解决方案。
另一种选择是为每个“逻辑队列”创建两个队列——一个用于记录器,一个用于实际使用——记录器然后将消息转发到“实际队列”——这可能可行,但可能有更好的解决方案?
因此,如果有人有一个解决方案可以通过“不可见”记录器或其他一些不错的记录解决方案来获取队列中的所有消息,那会很酷。
queue - 使用表排队
我需要使用表实现一个队列。业务需求是有一个队列,5-10 个盒子可以访问该队列以获取下一个作业/作业。每天的工作岗位不会超过 5000 个。此外,一批作业应该一次“出队”。
只是想知道我以前没有做过的问题领域和问题是什么。如果有人以前遇到过这个/做过这个,请您指出一个设计/示例实现或需要注意的问题。
谢谢
message-queue - Websphere MQ 消息历史
我的应用程序通过 IBM Websphere MQ 与另一个系统通信。有时没有消息进入我的队列,但另一个系统说他们已经发送给我。所以我想知道如何为到达我的队列的所有消息保留历史记录。
message-queue - 如何生成 Websphere MQ 脚本?
很多时候,我使用“mqsc”从脚本文件创建 MQ 队列管理器,但我不知道如何生成脚本文件。
谢谢
.net - ASP.NET - 新应用程序的最佳队列系统
我的组织正准备实施一个新系统,这是一个 asp.net 应用程序。该应用程序将有大量由网站启动的离线工作队列。该队列将保存不同类型的活动,最好是在 XML 消息中。想想电子邮件通知、计划任务等。
过去,该组织可能会使用 MSMQ 来完成此任务。然而,他们认为 MSMQ 是老派(我部分同意他们的观点),因此我们将进行架构审查以确定“最佳”解决方案。
在我看来,有几个潜在的选择:
1. 坚持在最新版本的 MSMQ 上使用新的实现 - 不理想,但已成为已知产品。
2. 使用 Windows Workflow Foundation,我从其他一些开发人员那里听说过使用它来做这类事情。
3. 开发自定义数据库解决方案。
我是否缺少任何明显的解决方案?理想情况下,这将是 Microsoft 产品,但实际上只需要在以 Microsoft 为中心的商店中工作。
我关心以下几点:
1. 易于实施和维护
2. 将存在一段时间的解决方案
3. 能够处理大量行,其中包含中等大小的 XML 数据
4. 绝对可靠的队列系统,快速更新(多个实用程序进程可能会从队列中抓取记录来处理它们)。
winapi - Win32:IPProgressDialog 不会消失,直到您将鼠标悬停在它上面
我正在使用Win32 进度对话框。最糟糕的是,当我打电话时:
它不会消失。它一直在屏幕上,直到用户将鼠标移到它上面——然后它突然消失了。
调用立即StopProgressDialog
返回(即它不是同步调用)。我可以在电话返回后通过做一些事情来证明这一点:
表格:
- 开始灰色
- 变红表示我们已经盯着
- 变回灰色以显示我们已调用停止
所以调用StopProgressDialog
已经返回,除了进度对话框仍然坐在那里,嘲笑我,显示消息:
停止进度对话框
10 秒内不出现
此外,进度对话框不会出现在屏幕上,直到
十秒钟的睡眠结束了。
不限于 .NET WinForms
同样的代码在 Delphi 中也失败了,它也是 Window 窗口的对象包装器:
保留签名
StopProgressDialog
如果失败会抛出异常。
IProgressDialog 中的大多数方法,在翻译成 C#(或 Delphi)时,使用编译器将失败的 COM HRESULTS 转换为本地语言异常的自动机制。
换句话说,如果 COM 调用返回错误 HRESULT(即小于零的值),以下两个签名将引发异常:
而以下内容可让您查看 HRESULT 并自行做出反应:
HRESULT 是一个 32 位值。如果设置了高位(或值为负),则为错误。
我正在使用前一种语法。因此,如果StopProgressDialog
返回错误,它将自动转换为语言异常。
注意:仅对于 SaG,我使用了[PreserveSig]
语法,返回的 HRESULT 为零;
消息等待?
症状类似于Raymond Chen 曾经描述的,这与错误使用 PeekMessage 后跟 MsgWaitForMultipleObjects 有关:
“有时我的程序卡住了,报告的记录比它应该报告的少。我必须摇动鼠标才能更新值。再过一段时间,它落后了两个,然后是三个……”
但这意味着失败出现在 IProgressDialog 中,因为它在 CLR .NET WinForms 和本机 Win32 代码上同样失败。
sql - MSMQ v 数据库表
现有流程响应用户输入更改表中预订记录的状态字段。
我还有另一个进程要编写,它将为具有特定状态的记录异步运行。它将读取表记录,执行一些操作(包括调用第三方 Web 服务),并更新记录的状态字段以指示处理已完成(或 In Error,带有错误计数)。
这个操作听起来很像队列。在这种情况下,使用 MSMQ 而不是 SQL 表的好处和权衡是什么,我为什么要选择一个而不是另一个?
是我们的软件在表中添加和更新记录。
这是一项将执行异步处理的新工作(Windows 服务)。这需要“永远在线”。
java - 具有优先级的消息处理
在 Java Web 应用程序中,我有一个 A 类型的重复消息负载(例如,每小时 20,000 条)。然后我有第二种类型的消息(B 型)偶尔出现,但优先级高于 A 型(比如 3,000)。我希望能够使用开源软件在一台或多台机器上处理这些消息。
在我看来,如果我有一个 JMS 服务器可以根据优先级从其队列中发送消息(例如,发送三个 B 类型的消息,然后发送一个 A 类型的消息,即使所有 A 类型的消息都是在消息队列的顶部)。
您知道可以执行此操作的 JMS 服务器吗?或者您知道实现此操作的另一种方法吗?