问题标签 [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 投票
2 回答
136 浏览

database - 评论帖子可扩展性:每位用户前 n 次,1 次更新,重读

这是情况。拥有数百万用户的网站。每个用户的页面都有一个消息部分。任何人都可以访问用户的页面,他们可以在其中留言或查看最后 100 条消息。

消息是带有一些额外元数据的短文本文件。每条消息都必须永久存储,唯一必须实时快速的是消息更新和阅读(人们将其用作聊天)。将经常阅读一些消息以检查更改。定期归档旧消息(大于 100 条)是可以的,但它们必须是可访问的。

目前都在一个大数据库表中,阅读消息列表和发送更多更新的人之间的争用正在成为一个问题。

如果您必须重新构建系统,您会使用什么存储机制/缓存?这里可以使用什么样的计算机科学学习?(例如集合、列表访问等)

0 投票
5 回答
11830 浏览

c# - 在 ui 线程中执行委托(使用消息泵)

我有一个后台线程来处理与外部服务的通信。每次后台线程收到一条消息时,我都想将其传递给 UI 线程以进行进一步处理(显示给用户)。

目前我已经创建了一个线程安全的消息队列,它定期在 Timer.Tick 中汇集并填充到后台线程中。但是这个解决方案是次优的。

你知道如何使用消息泵将事件从后台线程传递到 ui 线程吗?

0 投票
2 回答
1255 浏览

delphi - Delphi 是否存在“消息总线”模式的开源实现?

我正在寻找这种企业集成模式的实现

http://msdn.microsoft.com/en-us/library/ms978583.aspx

以更一般的方式解释

http://www.eaipatterns.com/Messaging.html

Delphi 是否存在“消息总线”(或消息队列)模式的开源实现?

0 投票
1 回答
8644 浏览

message-queue - 在 FIFO 排队系统中,实现优先级消息传递的最佳方式是什么

对于不始终支持优先级消息的面向消息的中间件(例如 AMQP),当队列只有 FIFO 语义时,实现优先级消费的最佳方式是什么?一般用例是这样一个系统,当队列中存在大量消息积压时,消费者在接收优先级较低的消息之前接收优先级较高的消息。

0 投票
1 回答
3661 浏览

process - AMQP 延迟传递和防止重复消息

我有一个系统会偶尔生成消息,我想每 5 分钟只提交零或一条消息。如果没有生成消息,则队列使用者不会处理任何内容。如果在 5 分钟内生成了 100 条相同的消息,我只希望从队列中使用其中的一条。

我正在使用 AMQP(RabbitMQ),有没有办法在 rabbitmq 或 AMQP 协议中实现这一点?我可以检查队列的内容以确保不插入重复项吗?队列检查似乎是一个坏主意,通常不应该为消息传递系统做些什么。

如果没有队列检查,这可以用这些工具来完成吗?想到的唯一解决方案是使用第二个队列接收所有消息,然后消费者读取每条消息并将其放入内部队列中,等待 5 分钟,然后丢弃收到的任何重复消息。在延迟之后,单条消息被放到“真正的”队列中进行处理。

看起来这可能是队列系统可以处理的常见情况。有任何想法吗?

0 投票
1 回答
3459 浏览

linux - msgsnd() 线程和/或进程安全吗?

如果两个 pthread 在“同一”时间调用 msgsnd() 函数,将消息发布到同一个消息队列,会发生什么?

如果两个进程做同样的事情怎么办?它们是线程还是进程有关系吗?

对 Linux 2.6.15-2.5 #1 SMP PREEMPT Tue Sep 19 10:56:25 CDT 2006 x86_64 x86_64 x86_64 GNU/Linux 特别感兴趣

0 投票
1 回答
439 浏览

message-queue - WebSphere MQ 队列创建

我有一个AIS.CICSUD1.BROKER.DATA由不同进程 ID 访问的队列,例如 BO01、BO02、BO03。

我可以为不同的进程 ID 创建相同的队列吗?我在 WebSphere MQ Explorer 上尝试过,但它给了我重复的队列错误。

我的队列管理器在我的本地机器上,我只需要从我的本地机器访问队列。

请告诉我

0 投票
4 回答
1790 浏览

c++ - Win32 消息处理程序错误传播

我正在编写一个使用单个对话框的(C++)应用程序。在设置消息泵和处理程序后,我开始想知道如何将 C++ 异常传播到我的原始代码(CreateDialogParam例如,调用 的代码)。

这是我的意思的骨架示例:

如您所见,WinMain将处理“异常 2”和“3”,但处理“异常 1”。

我的基本问题很简单;将这些错误传播到原始“调用”代码的优雅方法是什么?

我想也许可以使用自定义消息并将实际的throw-statements 移到消息泵(in RunApp()),但我不确定这将如何工作,因为我一般对 Windows 的经验相对较少。

也许我对这种情况的看法都错了。当您在消息处理程序中时,当发生致命事件(即,获取关键资源失败,并且没有恢复的机会)时,通常如何摆脱困境?

0 投票
5 回答
7530 浏览

c++ - 如何从消息队列接收动态长度数据?

我必须使用 SysV 消息队列为大学项目发送和接收动态数据。

数据的长度在单独的消息中传输,size因此是已知的。

这就是我尝试接收数据的方式。我不得不承认我不是 C++ 专家,尤其是在内存分配方面。

问题似乎是malloc电话,但我不知道如何正确地做到这一点。

编辑

我尝试的是在消息队列周围的 OO 包装器中使用某种读取方法。我想将消息队列中的数据读入 achar[]或 a std::string。我现在看起来(简化)是这样的。

我得到的只是分段错误或完全损坏的数据(尽管这些数据有时包含我想要的)。

0 投票
1 回答
1151 浏览

java - 消息传递的幂等性屏障

我最近看到的关于RabbitMQ的一个演示文稿提到了使用称为“幂等性屏障”的东西来进行消息重复数据删除。这只是消息混合器的一个花哨名称还是更具体的名称。如果是这样,它到底是什么?谷歌搜索产生的结果大多与 RabbitMQ 相关,几乎没有解释它是什么。