问题标签 [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.
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 和/或我的机器上分配足够的空间来防止这种情况发生?
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 的所有指示时,包括
- 生成 RootCA 证书并将其应用于 Java 信任库
- 使用您的 Windows 登录用户/密码
- 使用 amqps://[user]:[pwd]@FQDN/[namespace] 连接工厂字符串
- 使用 [namespace]/[queuename] 作为您的物理队列名称。
上下文查找、连接创建、会话创建都可以正常工作。但是,当需要创建 MessageProducer 或 MessageConsumer 时,我会遇到错误。
对于 MessageProducer 创建(不管是队列还是主题),我总是得到
对于 MessageConsumer 创建我得到
这是我尝试过的几件事。
- 我的服务总线安装在 Windows 2012 Server 上。我的客户端从另一个 Windows 2012 Server 运行。但是我也将客户端移到了运行服务总线的服务器上,但没有解决方案。(所以这不是位置问题)
- 当我从信任库中取出证书时,我收到了一个适当的错误。当我把它插回去时,错误就消失了。(所以这不是证书问题)
- 当我故意拼错我的 Windows 用户名或密码时,我会收到身份验证错误。否则错误消失。(所以这不是用户/密码问题)
- 似乎我在连接字符串中显式键入端口号 5671 并不重要。在任何一种情况下,连接创建都可以正常工作。(所以这不是连接问题)
- 在连接字符串或队列定义中定义命名空间似乎无关紧要。在这两种情况下都失败了。
- 我已经下载了 Qpid-JMS-Client (0.22) 的源代码并单步调试。目标(要连接的队列的地址)在创建连接时设置正确,但在离开同步块后立即重置为 null,这会导致错误(在 MessageProducer 的情况下)
我从原始 Microsoft 文档中遗漏了什么(由名为 Sentinel 的用户确认它有效)?
任何帮助将不胜感激。谢谢你,-Dogan Atay
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 已经在其他地方使用)。
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。
杰姆斯
amqp - 使用 Elixir 到 Active MQ 的 AMQP 连接字符串
我正在使用 ActiveMQ 作为消息代理,并使用 Qpid proton c 库连接到 Erlang 以进行消息传递服务,并且在运行 ActiveMQ 的情况下似乎可以很好地使用以下命令。
我需要在 elixir 中编写一个模块来连接到 ActiveMQ 代理,就像上面在 erlang 中所做的一样。Erlang 虽然使用 qpid 库连接到消息代理服务。请建议。
erlang - Qpid Erlang 模块
我是 erlang 的新手,但设法让 ActiveMQ 使用 qpid pronton c 库与我的 erlang shell 对话,这运行良好,我从我的 erlang shell 上的队列本身获取消息,反之亦然。
现在,我想使用 .erl 文件实现与上述相同的代码,每次我们在队列上有新消息时都会调用一些函数,我可以采取进一步的措施将相同的消息返回到源。
servicebus - 通过 Qpid JMS 客户端从服务总线读取失败
我正在尝试从 Qpid JMS 客户端连接到 Windows 服务总线。身份验证和握手成功,但无法从主题或队列中获取任何内容。
我的代码基于此处提供的教程。
在阅读尝试从服务总线获取消息时:
服务器无法处理请求;请重试操作。如果问题仍然存在,请联系您的服务总线管理员并提供跟踪 ID..TrackingId:583da4f8d58d4fa59dc9521c6f799cb8_GWIN-AN5B307EEHM,TimeStamp:11.7.2014。7:44:17
我的问题是我在哪里可以在服务总线上找到这个跟踪 ID 并获得一些关于它的详细信息?有没有人有类似的问题?
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 发送消息默认处于异步模式。显然这些数字告诉我们它可能正在同步模式下处理?
这是我已经研究过的一些链接
- http://activemq.apache.org/amqp.html
- http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
- http://activemq.2283324.n4.nabble.com/Interesting-Persistent-Messaging-Performance-td4676001.html
- http://activemq.2283324.n4.nabble.com/Any-Performance-Latency-benchmarks-for-ActiveMQ-s-AMQP-implementation-against-OpenWire-td4674713.html
- http://www.slideshare.net/ceposta/activemq-performance-tuning#
http://working-with-activemq.blogspot.com/2012/05/performance-improvements.html
是否有我不知道的 ActiveMQ AMQP 和/或 QPid 配置(用于连接或通道)或调整选项?
更新 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 号码。还有其他建议吗?
谢谢你的帮助。
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。