问题标签 [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.

0 投票
1 回答
1773 浏览

multithreading - 我可以监控线程的消息队列的大小吗?

我们的应用程序收到来自 DCOM ( 0x80010100) 的 System Call Failed RPC 错误,我们怀疑目标线程的消息队列已满(尽管我不相信这是真的)。我知道队列仅限于10,000消息,我想看看在常见情况下我们是否接近这个数字。有没有办法监控线程的消息队列的大小?

我发现的最有希望的选项是GetQueueStatus,但这不包括队列中的消息数量,只包括它们的类型。

0 投票
1 回答
419 浏览

java - XmlBlaster 的优点和缺点

您是否正在使用 XmlBlaster?你怎么看待这件事?它的弱点和优势是什么?

0 投票
2 回答
4058 浏览

logging - 所有消息的 JMS 队列日志记录/浏览(队列的不可见使用者)(OpenJMS)

你知道,如果有一些很好的方法来浏览/记录 JMS 队列?(我正在使用 OpenJMS)

对于主题,我可以再添加一个消费者,仅此而已,但是对于队列,我还没有完成解决方案。我想记录某些队列和主题中的所有消息,而不会将它们从队列中“弹出”(以便记录器可以浏览“不可见”的队列)。

使用javax.jms.QueueBrowser我可以获得队列的快照,但这似乎没有提供“侦听器解决方案” - 一次又一次地读取无限循环队列上的所有消息,并希望没有消息碰巧被写入并在我的快照之前消耗 - 这听起来不是一个好的解决方案。

另一种选择是为每个“逻辑队列”创建两个队列——一个用于记录器,一个用于实际使用——记录器然后将消息转发到“实际队列”——这可能可行,但可能有更好的解决方案?

因此,如果有人有一个解决方案可以通过“不可见”记录器或其他一些不错的记录解决方案来获取队列中的所有消息,那会很酷。

0 投票
4 回答
1621 浏览

queue - 使用表排队

我需要使用表实现一个队列。业务需求是有一个队列,5-10 个盒子可以访问该队列以获取下一个作业/作业。每天的工作岗位不会超过 5000 个。此外,一批作业应该一次“出队”。

只是想知道我以前没有做过的问题领域和问题是什么。如果有人以前遇到过这个/做过这个,请您指出一个设计/示例实现或需要注意的问题。

谢谢

0 投票
3 回答
2635 浏览

message-queue - Websphere MQ 消息历史

我的应用程序通过 IBM Websphere MQ 与另一个系统通信。有时没有消息进入我的队列,但另一个系统说他们已经发送给我。所以我想知道如何为到达我的队列的所有消息保留历史记录。

0 投票
3 回答
7150 浏览

message-queue - 如何生成 Websphere MQ 脚本?

很多时候,我使用“mqsc”从脚本文件创建 MQ 队列管理器,但我不知道如何生成脚本文件。

谢谢

0 投票
8 回答
5061 浏览

.net - ASP.NET - 新应用程序的最佳队列系统

我的组织正准备实施一个新系统,这是一个 asp.net 应用程序。该应用程序将有大量由网站启动的离线工作队列。该队列将保存不同类型的活动,最好是在 XML 消息中。想想电子邮件通知、计划任务等。

过去,该组织可能会使用 MSMQ 来完成此任务。然而,他们认为 MSMQ 是老派(我部分同意他们的观点),因此我们将进行架构审查以确定“最佳”解决方案。

在我看来,有几个潜在的选择:

1. 坚持在最新版本的 MSMQ 上使用新的实现 - 不理想,但已成为已知产品。
2. 使用 Windows Workflow Foundation,我从其他一些开发人员那里听说过使用它来做这类事情。
3. 开发自定义数据库解决方案。

我是否缺少任何明显的解决方案?理想情况下,这将是 Microsoft 产品,但实际上只需要在以 Microsoft 为中心的商店中工作。

我关心以下几点:
1. 易于实施和维护
2. 将存在一段时间的解决方案
3. 能够处理大量行,其中包含中等大小的 XML 数据
4. 绝对可靠的队列系统,快速更新(多个实用程序进程可能会从队列中抓取记录来处理它们)。

0 投票
3 回答
2405 浏览

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 代码上同样失败。

0 投票
11 回答
6775 浏览

sql - MSMQ v 数据库表

现有流程响应用户输入更改表中预订记录的状态字段。

我还有另一个进程要编写,它将为具有特定状态的记录异步运行。它将读取表记录,执行一些操作(包括调用第三方 Web 服务),并更新记录的状态字段以指示处理已完成(或 In Error,带有错误计数)。

这个操作听起来很像队列。在这种情况下,使用 MSMQ 而不是 SQL 表的好处和权衡是什么,我为什么要选择一个而不是另一个?

是我们的软件在表中添加和更新记录。

这是一项将执行异步处理的新工作(Windows 服务)。这需要“永远在线”。

0 投票
4 回答
4056 浏览

java - 具有优先级的消息处理

在 Java Web 应用程序中,我有一个 A 类型的重复消息负载(例如,每小时 20,000 条)。然后我有第二种类型的消息(B 型)偶尔出现,但优先级高于 A 型(比如 3,000)。我希望能够使用开源软件在一台或多台机器上处理这些消息。

在我看来,如果我有一个 JMS 服务器可以根据优先级从其队列中发送消息(例如,发送三个 B 类型的消息,然后发送一个 A 类型的消息,即使所有 A 类型的消息都是在消息队列的顶部)。

您知道可以执行此操作的 JMS 服务器吗?或者您知道实现此操作的另一种方法吗?