问题标签 [rabbitmq]
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.
mongodb - MongoDB Schema Design - 实时聊天
我正在启动一个项目,我认为由于它提供的速度和可扩展性,它特别适合 MongoDB。
我目前感兴趣的模块与实时聊天有关。如果我要在传统的 RDBMS 中执行此操作,我会将其拆分为:
- 频道(一个频道有很多用户)
- 用户(一个用户有一个频道但有很多消息)
- 消息(一条消息有一个用户)
这个用例的目的,我想假设一次通常有 5 个通道处于活动状态,每个通道每秒最多处理 5 条消息。
需要快速的特定查询:
- 获取新消息(可能基于书签、时间戳或递增计数器?)
- 向频道发布消息
- 验证用户是否可以在频道中发帖
记住 MongoDB 的文档限制为 4mb,您将如何设计架构?你的会是什么样子?有什么我应该注意的问题吗?
php - 对于基于浏览器的实时游戏,我应该选择 AMQP 还是 XMPP 哪一个?
我在 AMQP (RabbitMQ) 与 XMPP (eJabberd) 之间进行选择,用于我的基于浏览器的无闪存 javascript 驱动的实时回合制游戏。我不太了解 AMQP 和 XMPP 协议。我想使用 PHP 进行用户授权,并使用 MySQL 进行一些数据存储检索。据我所知,RabbitMQ 有 PHP 客户端,但 eJabberd 没有。
我的理解是javascript客户端调用PHP脚本并操作必要的处理,然后传递给AMQP或XMPP服务器将数据传递给对手玩家。Wrox 有一本好书“Pro XMPP Programming with JS and jQuery”,但没有关于 PHP 的示例。所以以下是我的问题。
1) 哪种协议适合我的游戏?
2) 我是否应该仅仅因为它的 PHP 客户端支持而选择 RabbitMQ?
c# - RabbitMQ - 无法以相同的顺序获取消息集
我在 C# 中使用 Rabbit MQ。这是我的场景
- 一个单独的进程将消息发布到队列
- 客户端必须从队列中读取 N 组消息
- 处理 N 条消息
- 确认 N 条消息
在同一个频道下,我接收消息,然后处理它们,然后确认它们。服务器进程不断发布消息。我面临的问题是,当我尝试获取下一组消息时,它们的顺序与发布过程发布的顺序不同。消息以随机顺序出现。只有第一组消息以正确的顺序出现。
有人在这里出了什么问题吗?创建一个新频道来访问下一组消息是不对的吗?下面是示例代码:
请帮忙。谢谢!
python - 在多个 django 进程之间存储任务状态
我正在 rabbitmq 消息和 Django 应用程序之间建立一个日志桥,以将后台任务状态存储在数据库中以供进一步调查/审查,也可以通过 Django 管理界面重新发布任务。我想这没什么花哨的,只是标准的生产者-消费者模式。
- Web 应用程序发布到消息队列并将初始任务状态插入数据库
- Consumer,它是一个单独的python进程,处理消息并根据任务输出更新任务状态
问题是,数据库中缺少一些任务,因此从未执行。我怀疑这是因为消费者在执行 db commit 之前收到了消息。所以基本上,从 Model.save() 返回并不意味着事务已经结束并且整个通信中断。
有什么办法可以解决这个问题吗?也许我可以使用某种 post_transaction 信号?
先感谢您。
linux - 用于 ubuntu 的稳定简单的 amqp 服务器
我在 Ubuntu 10.04 64 位操作系统上使用 rabbitmq-server 作为带有 python 客户端的 amqp 服务器。
Rabbitmq-server 现在无法启动。我卸载并安装了最新的 rabbitmq-server 1.8.0 但我仍然无法让 rabbitmq 工作。
我想要在 ubuntu 系统上使用 amqp 的学习曲线较少的其他替代方案。你能推荐一个吗?
messaging - AMQP 与 Websphere MQ
我们正在开发一个支持 AMQP 进行排队的应用程序。我们的一些客户正在使用 Websphere MQ。我只是想知道这两种协议在功能方面的可互换性。我正在使用celery,只要我可以编写 Websphere MQ 后端,它就可以让我抽象出较低级别的东西。我试图弄清楚这将是一个多么困难的挑战。
Websphere MQ 是否提供 AMQP 功能的超集?是否有任何一个可能让我的生活变得困难的“特征”?
python - 如何在直接交换中向所有具有相同队列名称/路由密钥值的订阅者广播
考虑一个有 N 个订阅者的层,所有订阅者都使用相同的队列名称和路由键值连接到直接交换。这将创建一个负载平衡系统,其中一个入站消息循环发送到其中一个订阅者。这对于处理横向扩展问题非常有效,因为随着负载的增加可以添加更多的订阅者,并且以后可以在必要时撤回。
现在考虑能够在不知道有多少订阅者的情况下向该层中的所有订阅者发送消息的要求(例如“重置您的状态”或“请立即关闭”管理消息)。有没有办法在rabbitmq中做到这一点?如果这不可能,有更好的方法吗?
我的环境是使用 amqplib 的 Python。
xmpp - amqp 或 xmpp 用于实时在线游戏
这些技术套件中的哪一个适用于多用户在线游戏项目。项目要求: 1. 能够在任何给定时间处理 2k-5k 用户。2. iphone 和 android 的客户端库(本机,无 javascript)。3. Microsoft Windows 的客户端库(最重要),也适用于 mac os x 和 linux。4. 专门用于模组开发的良好文档 5. 项目不是开源的。因此,只能使用具有合适许可证的库。
我也可以用 erlang 和 java 编程,编程语言不是问题。
我正在研究以下服务器技术,例如 Openfire、Tigase、ejabberd 和 RabbitMQ。一切都对我的项目有好处,但我想更多地了解我需要什么套件,AMQP 或 XMPP。
AMQP 专门为实时在线游戏提供什么。它是比 xmpp 更好的选择吗?
content-type - RabbitMQ中的内容类型头有什么特殊含义吗?
RabbitMQ 中的内容类型标头是否有任何特殊含义,或者它只是我的生产者和消费者表示他们正在发送什么样的数据的一种标准化方式?换句话说:具有某些内容类型的消息会得到任何特殊处理,还是只是字节,无论哪种方式?
jms - RabbitMQ 与 Mule 相比如何
RabbitMQ 与 Mule 相比如何,我将使用面向消息的架构构建应用程序,AMQP (RabbitMQ) 提供了我想要的一切,但我对如此多的相关技术选择和类似 ESB 的概念感到困惑。我怀疑我是否在不考虑其他选择的情况下做出选择。
我很清楚 RabbitMQ 是一个消息代理,它帮助我在生产者和消费者之间调解消息(所有形式或发布订阅,我可以从 twitter 或 Facebook 更新等真实示例中了解它是如何使用的)
什么是骡子,如果我可以使用骡子实现我在 RabbitMQ 中所做的事情,我应该考虑骡子类似于 RabbitMQ 吗?
mule 的目标与消息代理的目标不同吗?
mule 是否假设它的底层有一个消息代理将消息传递给适当的 mule 侦听器(我可以很容易地在 RabbitMQ 中编写一个侦听器)
mule 是一个完整的 Java 基础系统吗(我用 RabbitMQ 做的当前实验花了我不到 30 分钟的时间来编写一个简单的 RPC 客户端服务器,客户端为 C#,服务器为 Java,在 Mule 中可以轻松完成这些事情)。