问题标签 [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.
data-structures - 传递延迟消息并检查唯一性的消息队列
我有一个接收传入事件的在线服务(每秒很少)。服务需要在 30 秒或更长时间没有事件时处理作业。服务分布在多台 PC 上,并使用 Amazon Web 服务(SQS 和 SimpleDB)作为主干。
我了解当有传入事件时如何安排作业(只需将消息放入消息队列即可完成),但是当条件为“X 秒内无事件”时如何安排作业?
理想情况下,我想要一个不允许重复消息、允许安排未来并允许调整每条消息的“交付日期”的消息队列。
有这样的消息队列实现吗?这个问题是否可以完全解决而无需在数据库中保留一些数据?
谢谢
message-queue - 为什么选择 ActiveMQ,而不是简单的 Queue/Mutex?
明天我将介绍我选择进程内消息队列实现的理由,但我无法阐明我的推理。我的共同设计者建议我们实现一个简单的异步队列,只使用一个基本的作业列表和一个互斥体来控制访问,我建议在嵌入式模式下使用 ActiveMQ。我个人对 ActiveMQ 印象深刻,我希望有一些好的、可靠的论据来支持我的直觉。
如果重要的话,应用程序基本上是 1 个生产者/n 个消费者,具有特定于正在处理的各个作业的优先级和类型信息。
值得注意的是,到目前为止,该解决方案的可管理性和可扩展性还不是强有力的论据。如果有人可以让我的论点更有力,我会很高兴。论坛能帮我解决吗?
windows - Win32 事件驱动编程是如何在底层实现的?
在 Win32 C++ 应用程序中,我们启动一个消息循环,从队列中获取消息,翻译它们,然后分派它们。最终,每条消息都会到达我们的 WndProc,在那里可以处理相关的事件。
我理解那部分。我不明白的是中间发生的事情。具体来说:
- 不同类型的 OS 中断处理程序必须将消息放入所述“消息队列”中,但是该队列驻留在进程地址空间的哪个位置?它是如何暴露给中断处理程序代码的?
- “翻译”信息是什么意思?调用的
TranslateMessage()
真正作用是什么? - 一旦被发送
DispatchMessage()
,消息在到达我的 WndProc 之前会经过哪些地方(即操作系统如何处理它)?
如果有人知道以上问题的答案,请满足我的好奇心。谢谢。
c++ - 更多线程,更好的性能?
当我编写消息驱动的应用程序时。很像标准的 Windows 应用程序,只是它广泛使用消息传递进行内部操作,关于线程的最佳方法是什么?
在我看来,基本上有三种方法(如果您有任何其他设置,请分享):
- 让一个线程处理所有消息。
- 为不同的消息类型(通用、UI、网络等)提供不同的线程
- 拥有多个共享和处理单个消息队列的线程。
那么,这三者之间会存在显着的性能差异吗?以下是一些一般性想法: 显然,最后两个选项受益于有多个处理器的情况。另外,如果任何线程正在等待外部事件,其他线程仍然可以处理不相关的消息。但是忽略这一点,似乎多个线程只会增加开销(线程切换,更不用说更复杂的同步情况)。
还有一个问题:您会建议在标准的 Windows 消息系统上实现这样的系统,还是实现单独的队列机制,为什么?
java - 在 Windows 上 - 我可以在哪里使用 mqji.properties?
我的应用程序是一个独立的 Java 应用程序,客户可以下载、安装和运行。它使用 MQ 与已经工作多年的主机进行通信。我自己和客户都没有在他们的 Windows 机器上安装任何 MQ;我们包含并使用 com.ibm.mq.jar 来完成这项工作。
显然,MQ 在类路径中需要一个 mqji.properties 文件来防止这种情况:
所以我的问题是:我在哪里得到一个?
c++ - 处理消息太慢,导致 UI 不稳定、无响应 - 如何使用多个线程来缓解这种情况?
我无法让我的应用程序响应用户操作。因此,我想在多个线程之间拆分消息处理。
我可以简单地创建几个线程,从所有线程中的同一个消息队列中读取,并让哪个线程能够处理每条消息吗?
如果是这样,如何实现?
如果没有,您能否提出另一种解决此问题的方法?
data-structures - 构建高性能和自动备份的队列
请就我的问题给我一些提示。
我正在构建一个队列数据结构:
- 在硬盘上实时备份
- 并且可以恢复备份
- 可以响应大量的入队/出队请求
谢谢!
ipc - RE:Posix 和 System V IPC
消息队列、共享内存和信号量中哪个 IPC 最容易转换为网络 IPC,哪个最难。
将 System V 共享内存转换为网络 IPC 或将 Posix 共享内存转换为网络 IPC 会更容易吗
.net - 持久消息/服务总线 - 自己动手还是冒着学习曲线的风险?
我们有一个客户端应用程序需要向服务器发送消息以获取各种通知。为了客户端可以偶尔连接运行,我将使用消息队列方法。队列处理将从队列中取出消息并调用 Web 服务,该服务会将它们放在另一个队列中以最终进行处理。这个问题是关于客户端环境的;服务器环境已经确定。
我不想使用 MSMQ,因为我们无法控制所有客户端 PC 以正确安装/配置和保护 MSMQ,而且由于用于调查 MSMQ 队列内容的工具质量,支持更具挑战性. SQL Server 2005 Express 在所有机器上,用于为我们的应用程序存储数据。
我目前有两个选择:
- 编写一个相当基本的持久消息队列,在序列化消息后将消息存储在表中,然后使用
ThreadPool.QueueUserWorkItem
针对每种消息类型配置的处理程序处理它们。总之,System.Transactions.TransactionScope
如果它们被成功处理,它们只会从持久队列中删除。 - 在客户端上使用 NServiceBus(这是我们作为一个团队使用的服务总线,因此 MassTransit 等不是选项),以及使用本地数据库的 Service Broker 传输。
我对服务总线几乎没有经验(我仍然没有真正了解服务总线术语),因此与编写更简单的东西以我需要的方式满足我的要求相比,我担心学习曲线(部署是一个大考虑)。
有人有想法吗?
java - MQJE018:协议错误 - 收到意外的段类型
呼叫所有 MQ 大师,
我的桌子下面有一个盒子,我们用它来复制我们的生产环境,它是:
WebSphere 6.1 Fedora Linux MQ 6.0
每当我们的一个应用程序尝试向 MQ 队列发送消息时,我们都会收到以下错误:MQJE018:协议错误 - 收到意外的段类型
任何有关这可能意味着什么的建议都将不胜感激,堆栈跟踪如下。
编辑:我在 IBM 文档中查找了原因代码,但几乎没有帮助