问题标签 [qpid]

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 投票
0 回答
99 浏览

python - 在 qpid 中创建多个持久队列时出错

创建多个持久队列时,我收到以下错误消息:

Failed: SessionException: (None, 'Queue stage-cart: create() failed: jexception 0x0400 fcntl::clean_file() threw JERR_FCNTL_OPENWR: Unable to open file for write. (open() failed: errno=24 (Too many open files)) (MessageStoreImpl.cpp:538)')

我知道这个问题与qpid.file_count因为我没有收到每个持久队列的此消息,如果我将足够多的队列转换为非持久队列,我根本不会看到该消息。如何在 qpid 和/或我的机器上分配足够的空间来防止这种情况发生?

0 投票
2 回答
3439 浏览

java - 使用 Java 和 AMQP 1.0 连接到 Windows Server (1.1) 上的服务总线

我要问的问题以前在这里问过。David Ingham 背诵了这个 Microsoft Document给出了答案。Sentinel 已确认该解决方案有效。

然而,我有同样的问题。我按照微软的文档来信,但是,仍然有同样的问题。

存在冗余的风险,问题是当使用 Qpid-JMS 客户端库(版本 0.22 或 0.26)连接到Windows Server不是 Azure)上的服务总线(1.1)并遵循 Microsoft 的所有指示时,包括

  1. 生成 RootCA 证书并将其应用于 Java 信任库
  2. 使用您的 Windows 登录用户/密码
  3. 使用 amqps://[user]:[pwd]@FQDN/[namespace] 连接工厂字符串
  4. 使用 [namespace]/[queuename] 作为您的物理队列名称。

上下文查找、连接创建、会话创建都可以正常工作。但是,当需要创建 MessageProducer 或 MessageConsumer 时,我会遇到错误。

对于 MessageProducer 创建(不管是队列还是主题),我总是得到

对于 MessageConsumer 创建我得到

这是我尝试过的几件事。

  1. 我的服务总线安装在 Windows 2012 Server 上。我的客户端从另一个 Windows 2012 Server 运行。但是我也将客户端移到了运行服务总线的服务器上,但没有解决方案。(所以这不是位置问题)
  2. 当我从信任库中取出证书时,我收到了一个适当的错误。当我把它插回去时,错误就消失了。(所以这不是证书问题)
  3. 当我故意拼错我的 Windows 用户名或密码时,我会收到身份验证错误。否则错误消失。(所以这不是用户/密码问题)
  4. 似乎我在连接字符串中显式键入端口号 5671 并不重要。在任何一种情况下,连接创建都可以正常工作。(所以这不是连接问题)
  5. 在连接字符串或队列定义中定义命名空间似乎无关紧要。在这两种情况下都失败了。
  6. 我已经下载了 Qpid-JMS-Client (0.22) 的源代码并单步调试。目标(要连接的队列的地址)在创建连接时设置正确,但在离开同步块后立即重置为 null,这会导致错误(在 MessageProducer 的情况下)

我从原始 Microsoft 文档中遗漏了什么(由名为 Sentinel 的用户确认它有效)?

任何帮助将不胜感激。谢谢你,-Dogan Atay

0 投票
1 回答
656 浏览

activemq - ActiveMQ 中的 AMQP 1.0 支持 - 无法设置预取

我们正在尝试在 ActiveMQ 5.9.1 之上构建一个作业队列系统。我们在 activemq 中使用 AMQP 1.0 支持,当前使用 qpid jms 库作为客户端代码。

对于作业队列系统而言,我们可以将 prefetch 设置为 1 至关重要 - 我们希望我们的作业工作者一次只能获得一个任务,竞争消费者模式。qpid 库使用连接工厂定义支持这一点:

然而,ActiveMQ 似乎完全忽略了这一点,消费者在 activemq 管理控制台中显示为具有 100 的预取。

进一步挖掘,我找到了来源:org.apache.activemq.transport.amqp.AmqpProtocolConverter

其中包括以下行:

这是否意味着 AMQP 1.0 协议的 ActiveMQ 支持硬连线了所有客户端的预取值 100?显然这是非常错误的。我们有哪些选择?我们可以切换到纯 JMS 客户端,但会失去语言互操作性。或者我们可以切换到 RabbitMQ,这意味着引入另一个产品来支持(ActiveMQ 已经在其他地方使用)。

0 投票
1 回答
292 浏览

jms - Kaazing 配置

嗨,我想实现如下所述的一种设置,但在配置时遇到了一些问题。

Kaazing JMS 版本与 AMQP 1.0 架构(Apache Qpid JMS AMQP 1.0 客户端)的集成以 ActiveMQ 为中心。你能建议一下吗?

我所做的是,我已将 apache Qpid amqp 1.0 客户端提供的 lib/文件(.jar)复制到 kaazing 的 lib 目录中,现在我必须在网关 config.xml 中创建连接工厂配置。如何创建新配置以及如何处理 gateway-config.xml 中已有的旧配置

当前配置是使用 openwire tcp 协议连接到 ActiveMQ。

杰姆斯

0 投票
3 回答
1738 浏览

node.js - AMQP - Node.js 的 Apache Qpid 客户端

我一直在尝试为 Node.js 找到一个 Apache Qpid 客户端。

我发现了这个node-qpid包,但它太旧了,即使使用 README 中提到的 qpid-proton-C 0.3 也无法安装。

我基本上只是想要一个可以成功与 QPID C++ 代理对话的 Node.js 的 AMQP 客户端。

我为 Node.js 找到的大多数 AMQP 客户端(amqplib)(AMQP 0-9-1)不能与 QPID C++ 代理(AMQP 1-0 和 0-10)互操作。

任何帮助,将不胜感激。

0 投票
1 回答
588 浏览

amqp - 使用 Elixir 到 Active MQ 的 AMQP 连接字符串

我正在使用 ActiveMQ 作为消息代理,并使用 Qpid proton c 库连接到 Erlang 以进行消息传递服务,并且在运行 ActiveMQ 的情况下似乎可以很好地使用以下命令。

我需要在 elixir 中编写一个模块来连接到 ActiveMQ 代理,就像上面在 erlang 中所做的一样。Erlang 虽然使用 qpid 库连接到消息代理服务。请建议。

0 投票
2 回答
167 浏览

erlang - Qpid Erlang 模块

我是 erlang 的新手,但设法让 ActiveMQ 使用 qpid pronton c 库与我的 erlang shell 对话,这运行良好,我从我的 erlang shell 上的队列本身获取消息,反之亦然。

现在,我想使用 .erl 文件实现与上述相同的代码,每次我们在队列上有新消息时都会调用一些函数,我可以采取进一步的措施将相同的消息返回到源。

0 投票
1 回答
289 浏览

servicebus - 通过 Qpid JMS 客户端从服务总线读取失败

我正在尝试从 Qpid JMS 客户端连接到 Windows 服务总线。身份验证和握手成功,但无法从主题或队列中获取任何内容。

我的代码基于此处提供的教程。

在阅读尝试从服务总线获取消息时:

服务器无法处理请求;请重试操作。如果问题仍然存在,请联系您的服务总线管理员并提供跟踪 ID..TrackingId:583da4f8d58d4fa59dc9521c6f799cb8_GWIN-AN5B307EEHM,TimeStamp:11.7.2014。7:44:17

我的问题是我在哪里可以在服务总线上找到这个跟踪 ID 并获得一些关于它的详细信息?有没有人有类似的问题?

0 投票
2 回答
1261 浏览

performance - ActiveMQ 5.10/ QPid 0.28/ AMQP 1.0 性能问题

我正在尝试使用 Openwire 和 AMQP 与 ActiveMQ 进行性能基准测试,并获得巨大的吞吐量变化

使用 Openwire

持久消息大小:43 个字节,无压缩,200 个并发连接,吞吐量约为 9006 msgs/sec。

持久消息大小:1580 个字节,无压缩,200 个并发连接,吞吐量约为 3678.86 msgs/sec。

CPU 上的负载少于5%,因此我可以使用压缩来获得更好的吞吐量,但这是另一回事。

使用 AMQP 1.0

持久消息大小:43 个字节,无压缩,200 个并发连接,吞吐量约为 12.8 msgs/sec。

持久消息大小:1580 个字节,无压缩,200 个并发连接,吞吐量约为 11.9 msgs/sec。

我们的配置如下

调整工作:

我看了以下

对于 Openwire,在 Broker 端,将 tcp 更改为 nio

对于 AMQP 1.0,在 Broker 端,更改为 nio 并在 url 上添加了一些选项,但没有明显效果

Openwire 上可用的所有调整选项在 amqp 上不可用,尤其是在使用 jms.useAsyncSend=true 的生产者上给了我巨大的性能提升,当然 ack 的可靠性较低。我知道默认情况下,使用 amqp 发送消息默认处于异步模式。显然这些数字告诉我们它可能正在同步模式下处理?

这是我已经研究过的一些链接

更新 1:

正如 Tim 在下面指出的那样,我的比较是不正确的,我对 Openwire 使用 Async.Send,对 AMQP 1.0 使用 Sync.Send,我误解了 AMQP 1.0 默认使用 Async.Send。Robbie 指出,持久消息并非如此。这是正确的比较数字

使用 Openwire 持久消息大小进行同步发送:43 个字节,无压缩,200 个并发连接,100,000 条消息计数,吞吐量约为 13.1 毫秒/秒。

持久消息大小:1580 个字节,无压缩,200 个并发连接,100,000 条消息计数,吞吐量约为 13.1 msgs/sec。

使用 AMQP 1.0 的同步发送 持久消息大小:43 个字节,无压缩,200 个并发连接,100,000 条消息计数,吞吐量约为 12.8 毫秒/秒。

持久消息大小:1580 个字节,无压缩,200 个并发连接,100,000 条消息计数,吞吐量约为 11.9 msgs/sec。

Async.Send 使用 Openwire 持久消息大小:43 个字节,无压缩,200 个并发连接,100,000 条消息计数,吞吐量约为 9006 条消息/秒。

持久消息大小:1580 个字节,无压缩,200 个并发连接,100,000 条消息计数,吞吐量约为 3678.86 msgs/sec。

Async.Send 使用 AMQP 1.0 持久消息大小:43 个字节,无压缩,200 个并发连接,100,000 条消息计数,吞吐量约为 21.7 msgs/sec。

持久消息大小:1580 个字节,无压缩,200 个并发连接,100,000 条消息计数,吞吐量约为 21.2 msgs/sec。

笔记:

即使使用 Async.Send 无法保证消息传递,但使用 Openwire 我总是收到所有 100,0000 条消息,而使用 AMQP 1.0 时大约 25% 的消息丢失了。

AMQP 1.0 Async.Send 号码仍然不接近 Openwire Async.Send 号码。还有其他建议吗?

谢谢你的帮助。

0 投票
1 回答
1170 浏览

python - Qpid Proton Messenger API 错误处理

在使用Qpid Proton AMQP Messenger API for Python发送消息时,我非常想处理错误。

这是从交互式 Python 解释器发送到myqueue运行在 Qpid 代理上的不存在队列时的示例消息发送会话localhost

直接打印到 stdout(或 stderr) ,LINK ERROR并且没有迹象表明消息未在 API 中传递。当消息位于缓冲区中时,status() 调用在发送之前返回 None,并且在消息被丢弃之后也返回 None。

我错过了什么吗?

使用 Python 2.7,Qpid 质子 0.7。