问题标签 [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.

0 投票
4 回答
14698 浏览

message-queue - AMQP 等面向消息的中间件在哪些领域有用?

MOM(面向消息的中间件)解决了什么问题?可扩展性?一体化?

它们通常在哪个域中使用,在哪些域中通常使用?

例如,Google 是否将此类解决方案用于其主要搜索引擎或为 GMail 提供支持?

像沃尔玛、eBay、FedEx(几乎是 Java 商店)和 buy.com(几乎是 MS 商店)这样的大型网站呢?MOM 能解决那里的需求吗?

当您编写一个 Web 应用程序时,您控制服务器端并在那里拥有一个同质环境(例如数十个 Amazon EC2 实例都运行 Linux + Java JVM)以及客户端在哪里,嗯,Web 浏览器,这是否有意义?

对于需要与服务器通信的桌面应用程序是否有意义?

还是它“仅”适用于大型企业的东西,您通常拥有无数需要以某种方式进行通信的不同系统的快乐组合?

我对它们的用途有点困惑,我认为通过举例说明它们在哪里合适和在哪里不合适,我可以更好地理解它们的用途。

0 投票
1 回答
1167 浏览

erlang - Erlang AMQP 客户端库

是否有与 RabbitMQ 无关的 Erlang AMQP客户端库?

我知道rabbitmq-erlang-client,但我想要一些更解耦的东西......在为Debian存储库打包这些东西时会感到痛苦,安装等......

0 投票
2 回答
7388 浏览

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 会产生相同的结果,但还没有尝试过。

有没有办法配置某种心跳,或者你只需​​要编写自定义租约逻辑(例如“我现在在这里”)才能让它工作?

0 投票
1 回答
419 浏览

windows-ce - windows-ce 中的哪些消息传递技术可以保证消息传递?

我们正在构建一个基于 windows-ce (6.0R3) 的设备,该设备需要保证和审计就绪的消息传递(包括存储和转发)从云端向上和向下传递。

我一直在寻找以下选择:

  • MSMQ
  • 专有解决方案(我们的原型设备正在使用什么)
  • AMQP(例如,我没有找到任何用于 CE 的 RabbitMQ 客户端)

……还有其他人吗?

我们将通过公共网络传输敏感数据(谁不是?!?!),并且需要大规模的选项。在嵌入式设备上运行的任何东西也会对性能敏感。

0 投票
1 回答
172 浏览

erlang - AMQP 'connection.open' 保留参数

我正在用 Erlang 编写一个 AMQP 客户端库。对于“connection.open”方法,共有 3 个 AMQP 0.9.1 中有 2 个保留参数“记录在案”。当我发送没有“保留参数”的相关方法时,我得到“无法解码方法"在错误日志中。

我应该为那些“保留参数”发送什么值?

更新:似乎服务器仍然需要一些参数,即使这些参数已被弃用(参见代码生成器的源代码)。

0 投票
1 回答
361 浏览

c - 有人可以告诉使用 OpenAMQ C lib 连接到 rabbitMQ 服务器的步骤吗

我正在尝试在我的 C/C++ 应用程序中使用 RabbitMQ,到目前为止,我已经意识到使用 OpenAMQ 的 C 客户端是唯一的选择,但 OpenAMQ 是 AMQP 0-9,而 RabbitMQ 服务器是 0-8。我在某处读到,人们成功地对 RabbitMQ 进行了微小的更改,以使其与 OpenAMQ C lib 一起工作。有经验的人可以对此有所了解。

0 投票
1 回答
2580 浏览

ruby - 使用 AMQP、Rabbit 和 Ruby 刷新队列

我正在用 Ruby 开发一个系统,该系统将利用 RabbitMQ 在执行某些工作时将消息发送到队列。我在用:

我在这个 gem 上看到的大多数示例都在 EM.add_periodic_timer 块中进行了发布调用。这不适用于我怀疑的绝大多数用例,当然也不适用于我的用例。我需要在完成一些工作时发布一条消息,因此将发布语句放在 add_periodic_timer 块中是不够的。

所以,我试图弄清楚如何将一些消息发布到队列中,然后“刷新”它,以便我发布的任何消息随后都会传递给我的订阅者。

为了让您了解我的意思,请考虑以下发布者代码:

所以,这段代码只是简单地循环,在循环的每次迭代中以 40% 的概率发布一条消息,然后休眠 0.1 秒。它会一直执行此操作,直到发布了 50 条消息,然后停止 AMQP。当然,这只是一个概念证明。

现在,我的订阅者代码:

因此,我们只需订阅队列,并且对于收到的每条消息,我们都会将其打印出来。

很好,除了订阅者只在发布者调用 AMQP.stop 时接收到全部 50 条消息。

这是我的出版商的输出。为简洁起见,它在中间被截断:

接下来,我的订阅者的输出:

如果您注意到输出中的时间戳,则订阅者仅在发布者停止 AMQP 并退出后才会收到所有消息。

那么,作为一个 AMQP 新手,我怎样才能让我的消息立即传递呢?我尝试将 AMQP.start 和 AMQP.stop 放在发布者的 while 循环的主体中,但是只有第一条消息被传递 - 虽然奇怪的是,如果我打开日志记录,服务器没有报告错误消息并且消息确实被发送到队列,但永远不会被订阅者接收。

建议将不胜感激。谢谢阅读。

0 投票
1 回答
1136 浏览

java - ActiveMQ & Camel - 如何在路由路径中创建依赖关系

我有一个消息路由要实现,它的路由会根据消息内容而有所不同。路线的某些部分依赖于其他部分。

例如,如果我有 Data_A,其中有要对其执行的 Task_A 和 Task_B。而 Data_B 只有 Task_B 要对其执行。

这里每个任务都有一个由消费者服务的队列。

如果对数据请求 Task_B,则仅在 Task_B 之后才应执行 Task_A,我该如何设置此类依赖关系?

0 投票
3 回答
2117 浏览

java - 简单的 Java AMQP 服务器

是否有任何用 Java 编写的简单 AMQP 服务器/代理实现?

我需要将它用于本地集成测试。我想从ant/maven开始,不需要集群、持久化、性能等任何特性。只是一个模拟的类似 RabbitMQ 的实例,没有安装(就像 maven pom 的依赖项)和配置。

0 投票
1 回答
454 浏览

python - 在两个 RabbitMQ 队列中发布消息,而不是一个(使用 py-amqp)

我使用py-amqpFlopsy模块遇到了这个奇怪的问题。我编写了一个将消息发送到 RabbitMQ 服务器的发布者,我希望能够将其发送到指定的队列。在 Flopsy 模块上这是不可能的,所以我对其进行了调整,添加了一个参数和一行来在 Publisher 对象的 _init__ 方法上声明队列

通道对象是 py-amqplib 库的一部分

我遇到的问题是,即使它将消息发送到指定的队列,它也会将消息发送到默认队列。因为在这个系统中,我们希望发送相当多的消息,我们不想强调系统制造无用的重复......我试图调试代码并进入 py-amqplib 库,但我无法找出任何错误或缺少步骤。此外,我无法在代码之外找到任何文档形式的 py-amqplib。

关于为什么会发生这种情况以及如何纠正它的任何想法?