问题标签 [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 回答
429 浏览

data-structures - 传递延迟消息并检查唯一性的消息队列

我有一个接收传入事件的在线服务(每秒很少)。服务需要在 30 秒或更长时间没有事件时处理作业。服务分布在多台 PC 上,并使用 Amazon Web 服务(SQS 和 SimpleDB)作为主干。

我了解当有传入事件时如何安排作业(只需将消息放入消息队列即可完成),但是当条件为“X 秒内无事件”时如何安排作业?

理想情况下,我想要一个不允许重复消息、允许安排未来并允许调整每条消息的“交付日期”的消息队列。

有这样的消息队列实现吗?这个问题是否可以完全解决而无需在数据库中保留一些数据?

谢谢

0 投票
3 回答
1186 浏览

message-queue - 为什么选择 ActiveMQ,而不是简单的 Queue/Mutex?

明天我将介绍我选择进程内消息队列实现的理由,但我无法阐明我的推理。我的共同设计者建议我们实现一个简单的异步队列,只使用一个基本的作业列表和一个互斥体来控制访问,我建议在嵌入式模式下使用 ActiveMQ。我个人对 ActiveMQ 印象深刻,我希望有一些好的、可靠的论据来支持我的直觉。

如果重要的话,应用程序基本上是 1 个生产者/n 个消费者,具有特定于正在处理的各个作业的优先级和类型信息。

值得注意的是,到目前为止,该解决方案的可管理性和可扩展性还不是强有力的论据。如果有人可以让我的论点更有力,我会很高兴。论坛能帮我解决吗?

0 投票
5 回答
4571 浏览

windows - Win32 事件驱动编程是如何在底层实现的?

在 Win32 C++ 应用程序中,我们启动一个消息循环,从队列中获取消息,翻译它们,然后分派它们。最终,每条消息都会到达我们的 WndProc,在那里可以处理相关的事件。

我理解那部分。我不明白的是中间发生的事情。具体来说:

  1. 不同类型的 OS 中断处理程序必须将消息放入所述“消息队列”中,但是该队列驻留在进程地址空间的哪个位置?它是如何暴露给中断处理程序代码的?
  2. “翻译”信息是什么意思?调用的TranslateMessage()真正作用是什么?
  3. 一旦被发送DispatchMessage(),消息在到达我的 WndProc 之前会经过哪些地方(即操作系统如何处理它)?

如果有人知道以上问题的答案,请满足我的好奇心。谢谢。

0 投票
10 回答
1149 浏览

c++ - 更多线程,更好的性能?

当我编写消息驱动的应用程序时。很像标准的 Windows 应用程序,只是它广泛使用消息传递进行内部操作,关于线程的最佳方法是什么?

在我看来,基本上有三种方法(如果您有任何其他设置,请分享):

  1. 让一个线程处理所有消息。
  2. 为不同的消息类型(通用、UI、网络等)提供不同的线程
  3. 拥有多个共享和处理单个消息队列的线程。

那么,这三者之间会存在显着的性能差异吗?以下是一些一般性想法: 显然,最后两个选项受益于有多个处理器的情况。另外,如果任何线程正在等待外部事件,其他线程仍然可以处理不相关的消息。但是忽略这一点,似乎多个线程只会增加开销(线程切换,更不用说更复杂的同步情况)。

还有一个问题:您会建议在标准的 Windows 消息系统上实现这样的系统,还是实现单独的队列机制,为什么?

0 投票
2 回答
4566 浏览

java - 在 Windows 上 - 我可以在哪里使用 mqji.properties?

我的应用程序是一个独立的 Java 应用程序,客户可以下载、安装和运行。它使用 MQ 与已经工作多年的主机进行通信。我自己和客户都没有在他们的 Windows 机器上安装任何 MQ;我们包含并使用 com.ibm.mq.jar 来完成这项工作。

显然,MQ 在类路径中需要一个 mqji.properties 文件来防止这种情况:

所以我的问题是:我在哪里得到一个?

0 投票
3 回答
1156 浏览

c++ - 处理消息太慢,导致 UI 不稳定、无响应 - 如何使用多个线程来缓解这种情况?

我无法让我的应用程序响应用户操作。因此,我想在多个线程之间拆分消息处理。

我可以简单地创建几个线程,从所有线程中的同一个消息队列中读取,并让哪个线程能够处理每条消息吗?

如果是这样,如何实现?

如果没有,您能否提出另一种解决此问题的方法?

0 投票
3 回答
353 浏览

data-structures - 构建高性能和自动备份的队列

请就我的问题给我一些提示。

我正在构建一个队列数据结构:

  1. 在硬盘上实时备份
  2. 并且可以恢复备份
  3. 可以响应大量的入队/出队请求

谢谢!

0 投票
4 回答
2145 浏览

ipc - RE:Posix 和 System V IPC

  1. 消息队列、共享内存和信号量中哪个 IPC 最容易转换为网络 IPC,哪个最难。

  2. 将 System V 共享内存转换为网络 IPC 或将 Posix 共享内存转换为网络 IPC 会更容易吗

0 投票
3 回答
1815 浏览

.net - 持久消息/服务总线 - 自己动手还是冒着学习曲线的风险?

我们有一个客户端应用程序需要向服务器发送消息以获取各种通知。为了客户端可以偶尔连接运行,我将使用消息队列方法。队列处理将从队列中取出消息并调用 Web 服务,该服务会将它们放在另一个队列中以最终进行处理。这个问题是关于客户端环境的;服务器环境已经确定。

我不想使用 MSMQ,因为我们无法控制所有客户端 PC 以正确安装/配置和保护 MSMQ,而且由于用于调查 MSMQ 队列内容的工具质量,支持更具挑战性. SQL Server 2005 Express 在所有机器上,用于为我们的应用程序存储数据。

我目前有两个选择:

  1. 编写一个相当基本的持久消息队列,在序列化消息后将消息存储在表中,然后使用ThreadPool.QueueUserWorkItem针对每种消息类型配置的处理程序处理它们。总之,System.Transactions.TransactionScope如果它们被成功处理,它们只会从持久队列中删除。
  2. 在客户端上使用 NServiceBus(这是我们作为一个团队使用的服务总线,因此 MassTransit 等不是选项),以及使用本地数据库的 Service Broker 传输。

我对服务总线几乎没有经验(我仍然没有真正了解服务总线术语),因此与编写更简单的东西以我需要的方式满足我的要求相比,我担心学习曲线(部署是一个考虑)。

有人有想法吗?

0 投票
1 回答
5450 浏览

java - MQJE018:协议错误 - 收到意外的段类型

呼叫所有 MQ 大师,

我的桌子下面有一个盒子,我们用它来复制我们的生产环境,它是:

WebSphere 6.1 Fedora Linux MQ 6.0

每当我们的一个应用程序尝试向 MQ 队列发送消息时,我们都会收到以下错误:MQJE018:协议错误 - 收到意外的段类型

任何有关这可能意味着什么的建议都将不胜感激,堆栈跟踪如下。

编辑:我在 IBM 文档中查找了原因代码,但几乎没有帮助