问题标签 [amqp]
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.
message-queue - AMQP 等面向消息的中间件在哪些领域有用?
MOM(面向消息的中间件)解决了什么问题?可扩展性?一体化?
它们通常在哪个域中使用,在哪些域中通常不使用?
例如,Google 是否将此类解决方案用于其主要搜索引擎或为 GMail 提供支持?
像沃尔玛、eBay、FedEx(几乎是 Java 商店)和 buy.com(几乎是 MS 商店)这样的大型网站呢?MOM 能解决那里的需求吗?
当您编写一个 Web 应用程序时,您控制服务器端并在那里拥有一个同质环境(例如数十个 Amazon EC2 实例都运行 Linux + Java JVM)以及客户端在哪里,嗯,Web 浏览器,这是否有意义?
对于需要与服务器通信的桌面应用程序是否有意义?
还是它“仅”适用于大型企业的东西,您通常拥有无数需要以某种方式进行通信的不同系统的快乐组合?
我对它们的用途有点困惑,我认为通过举例说明它们在哪里合适和在哪里不合适,我可以更好地理解它们的用途。
erlang - Erlang AMQP 客户端库
是否有与 RabbitMQ 无关的 Erlang AMQP客户端库?
我知道rabbitmq-erlang-client,但我想要一些更解耦的东西......在为Debian存储库打包这些东西时会感到痛苦,安装等......
java - 使用 RabbitMQ(Java 客户端),有没有办法确定消费期间网络连接是否关闭?
我正在使用 Java 客户端在 RHEL 5.3 上使用 RabbitMQ。我有 2 个节点(机器)。Node1 正在使用 Java 帮助程序类 QueueingConsumer 从 Node2 上的队列中消费消息。
如果接口在 Node1 或 Node2 上关闭(例如 ifconfig eth1 down),客户端(上图)永远不会知道网络不再存在。RabbitMQ 是否在 Java 客户端上提供某种类型的配置,可用于确定连接是否已消失。关闭 Node2 上的 RabbitMQ 服务器将触发 ShutdownSignalException,可以捕获该异常,并且应用程序可以进入重新连接循环。但是关闭接口不会导致任何类型的异常发生,因此代码将在 consumer.nextDelivery() 上永远等待。
我也尝试过使用这个调用的超时版本。例如
但似乎这总是返回 true (即使接口已关闭)。我假设在连接上注册 ShutdownListener 会产生相同的结果,但还没有尝试过。
有没有办法配置某种心跳,或者你只需要编写自定义租约逻辑(例如“我现在在这里”)才能让它工作?
windows-ce - windows-ce 中的哪些消息传递技术可以保证消息传递?
我们正在构建一个基于 windows-ce (6.0R3) 的设备,该设备需要保证和审计就绪的消息传递(包括存储和转发)从云端向上和向下传递。
我一直在寻找以下选择:
- MSMQ
- 专有解决方案(我们的原型设备正在使用什么)
- AMQP(例如,我没有找到任何用于 CE 的 RabbitMQ 客户端)
……还有其他人吗?
我们将通过公共网络传输敏感数据(谁不是?!?!),并且需要大规模的选项。在嵌入式设备上运行的任何东西也会对性能敏感。
erlang - AMQP 'connection.open' 保留参数
我正在用 Erlang 编写一个 AMQP 客户端库。对于“connection.open”方法,共有 3 个 AMQP 0.9.1 中有 2 个保留参数“记录在案”。当我发送没有“保留参数”的相关方法时,我得到“无法解码方法"在错误日志中。
我应该为那些“保留参数”发送什么值?
更新:似乎服务器仍然需要一些参数,即使这些参数已被弃用(参见代码生成器的源代码)。
c - 有人可以告诉使用 OpenAMQ C lib 连接到 rabbitMQ 服务器的步骤吗
我正在尝试在我的 C/C++ 应用程序中使用 RabbitMQ,到目前为止,我已经意识到使用 OpenAMQ 的 C 客户端是唯一的选择,但 OpenAMQ 是 AMQP 0-9,而 RabbitMQ 服务器是 0-8。我在某处读到,人们成功地对 RabbitMQ 进行了微小的更改,以使其与 OpenAMQ C lib 一起工作。有经验的人可以对此有所了解。
ruby - 使用 AMQP、Rabbit 和 Ruby 刷新队列
我正在用 Ruby 开发一个系统,该系统将利用 RabbitMQ 在执行某些工作时将消息发送到队列。我在用:
- Ruby 1.9.1 稳定版
- 兔MQ 1.7.2
- AMQP gem v0.6.7 ( http://github.com/tmm1/amqp )
我在这个 gem 上看到的大多数示例都在 EM.add_periodic_timer 块中进行了发布调用。这不适用于我怀疑的绝大多数用例,当然也不适用于我的用例。我需要在完成一些工作时发布一条消息,因此将发布语句放在 add_periodic_timer 块中是不够的。
所以,我试图弄清楚如何将一些消息发布到队列中,然后“刷新”它,以便我发布的任何消息随后都会传递给我的订阅者。
为了让您了解我的意思,请考虑以下发布者代码:
所以,这段代码只是简单地循环,在循环的每次迭代中以 40% 的概率发布一条消息,然后休眠 0.1 秒。它会一直执行此操作,直到发布了 50 条消息,然后停止 AMQP。当然,这只是一个概念证明。
现在,我的订阅者代码:
因此,我们只需订阅队列,并且对于收到的每条消息,我们都会将其打印出来。
很好,除了订阅者只在发布者调用 AMQP.stop 时接收到全部 50 条消息。
这是我的出版商的输出。为简洁起见,它在中间被截断:
接下来,我的订阅者的输出:
如果您注意到输出中的时间戳,则订阅者仅在发布者停止 AMQP 并退出后才会收到所有消息。
那么,作为一个 AMQP 新手,我怎样才能让我的消息立即传递呢?我尝试将 AMQP.start 和 AMQP.stop 放在发布者的 while 循环的主体中,但是只有第一条消息被传递 - 虽然奇怪的是,如果我打开日志记录,服务器没有报告错误消息并且消息确实被发送到队列,但永远不会被订阅者接收。
建议将不胜感激。谢谢阅读。
java - ActiveMQ & Camel - 如何在路由路径中创建依赖关系
我有一个消息路由要实现,它的路由会根据消息内容而有所不同。路线的某些部分依赖于其他部分。
例如,如果我有 Data_A,其中有要对其执行的 Task_A 和 Task_B。而 Data_B 只有 Task_B 要对其执行。
这里每个任务都有一个由消费者服务的队列。
如果对数据请求 Task_B,则仅在 Task_B 之后才应执行 Task_A,我该如何设置此类依赖关系?
java - 简单的 Java AMQP 服务器
是否有任何用 Java 编写的简单 AMQP 服务器/代理实现?
我需要将它用于本地集成测试。我想从ant/maven开始,不需要集群、持久化、性能等任何特性。只是一个模拟的类似 RabbitMQ 的实例,没有安装(就像 maven pom 的依赖项)和配置。
python - 在两个 RabbitMQ 队列中发布消息,而不是一个(使用 py-amqp)
我使用py-amqp和Flopsy模块遇到了这个奇怪的问题。我编写了一个将消息发送到 RabbitMQ 服务器的发布者,我希望能够将其发送到指定的队列。在 Flopsy 模块上这是不可能的,所以我对其进行了调整,添加了一个参数和一行来在 Publisher 对象的 _init__ 方法上声明队列
通道对象是 py-amqplib 库的一部分
我遇到的问题是,即使它将消息发送到指定的队列,它也会将消息发送到默认队列。因为在这个系统中,我们希望发送相当多的消息,我们不想强调系统制造无用的重复......我试图调试代码并进入 py-amqplib 库,但我无法找出任何错误或缺少步骤。此外,我无法在代码之外找到任何文档形式的 py-amqplib。
关于为什么会发生这种情况以及如何纠正它的任何想法?