问题标签 [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 投票
1 回答
236 浏览

java - 浏览服务总线队列挂在 hasMoreElements()

我们有本地服务总线安装。我可以使用 QPID AMQP 1.0 0.24 客户端发布和订阅/读取消息。但是队列浏览不起作用,当队列中没有更多消息时,对 hasMoreElements() 的调用会无限期挂起。堆栈跟踪是:

编码:

ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("MS_SERVICE_BUS"); 连接 = 连接工厂.createConnection();

QPID 0.22 的行为相同。这是 QPID 客户端或服务总线中的错误吗?

谢谢,扬

0 投票
2 回答
449 浏览

java - AMQP 上的 ServiceBus 丢失重新传递的消息

我们有 ServiceBus 的本地安装。在处理重新投递时,我注意到了奇怪的行为。我创建了示例应用程序,见下文。此应用程序将向具有持久队列的主题发布 5 条消息,然后尝试读取所有消息。对于每条消息,它将创建新会话并开始/停止消息传递(qpid 后台线程的正常启动/停止需要超时)。我想预取会使笔记阅读消息被锁定。我希望最终会收到所有消息,但有些消息正在丢失。最大传递计数设置为 10。服务总线资源管理器检查了队列,测试后它是空的,丢失的消息不在 Dealetter 队列中。

用于表现行为的测试,这不是消费消息的方式:

这是日志,消息 1、2 和 4 丢失了:

缺少方法(编辑,简化代码):

0 投票
1 回答
553 浏览

java - AMQP Qpid Proton - 无法将消息发送到超过 256 个队列

我使用 AMQP 1.0 和 Qpid Proton 0.6 和 ActiveMQ 5.9.0 作为代理。

当向少于 256 个队列发送消息时,一切正常。

在 256 个队列后向超过 256 个 Proton 块发送消息时。

Proton 非阻塞模式也会出现同样的情况。

是质子限制还是我做错了什么?

0 投票
1 回答
1200 浏览

java - AMQP 上的 ServiceBus 关闭消费者

我们有 ServiceBus 和 Java JMS QPID 客户端 0.26 的本地安装。SB 中似乎存在错误 - 当生产者关闭连接时,它会向消费者发送 END 命令。生产者和消费者都必须在同一台机器上运行。

首先启动侦听队列的消费者:

然后向队列发布 1 条消息:

一旦生产者进程结束,消费者也将结束,等待时间小于超时。receive(timeout) 方法在超时到期之前返回 null,这意味着(javadoc)“消息使用者同时关闭”。或者,您可能会看到 IllegalStateException: Closed during call to acknowledge()。

这是来自消费者的日志。您可以看到服务器向客户端发送了意外的 End{}:

0 投票
0 回答
1877 浏览

rabbitmq - ActiveMQ vs Apollo vs RabbitMQ vs Qpid (AMQP)

我正在尝试找出满足我要求的最佳 MQ 选项。我需要能够在地理上不同的数据中心内和跨数据中心以高可靠性传输文本和二进制消息。快速很好,但缩放也是一种选择。与 RabbitMQ 一样,支持很好。

以下是一些假设:

  1. 使用联合或铲除消息在数据中心之间推送相同的消息。
  2. 使用 AMQP 传输二进制消息,因为我们是 .Net/Python 商店。

我想确保我的假设是有效的,并且需要帮助来选择哪个 MQ。我过去使用过 ActiveMQ+MySQL,但我喜欢 Mnesia 的选项,用于持久性消息传递。另外,使用 AMQP 0.9 代替 1.0 可以吗?看起来 RabbitMQ 通过插件支持 1.0。

感谢我能得到的任何替代建议。

0 投票
1 回答
1491 浏览

python - 使用 Python 绑定在 Qpid Proton 中设置自定义消息属性

我正在尝试使用 Qpid Proton 的 Python 绑定发送带有自定义属性的消息,但我找不到正确的方法......

结果是...

欢迎任何帮助!

TIA,托马斯。

0 投票
1 回答
202 浏览

rubygems - 尽管已安装软件包,但在 stdc++ 上 Gem 安装 qpid_messaging 失败

尝试使用以下内容(在 Fedora 19 中)安装 qpid 消息传递 gem:

失败并显示以下消息:

我的机器上安装了 libstdc++ 包。我是否需要将 gem install 指向某个模块或标头 (.so/.h) 才能使其正常工作?

0 投票
0 回答
136 浏览

java - QPID 消息元素顺序

我维护一个使用 Apache QPID 作为消息交换中间件的系统。它的客户端大多是用 Java 编写的,使用 JMS 作为 Java 中 QPID 的抽象层。

另一方面,我通常使用一个客户端,也使用相同的技术集用 Java 编写,我用它来收听一些 EXCHANGE/TOPICS 作为监控工具。

一切都运行良好,但我很感兴趣的是,消息元素的顺序对于包含完全相同信息的确切消息会有所不同,而且更重要的是,使用相同的算法生成。

在此处输入图像描述 在此处输入图像描述

正如您在下面的代码片段中所见,我遍历 JMSMapMessage属性,将每个元素插入到 HashMap 中,该 HashMap 将被迭代以插入屏幕截图的树元素。

知道 HashMap 不一定按顺序存储其项目,但我倾向于认为,对于按照相同顺序插入的相等键集,您应该对其元素进行等效迭代(关于顺序)。我可能错了。

无论如何,我已经在props它被遍历的地方调试了应用程序,我也可以看到顺序上的差异。

这根本不影响系统,但我想知道:

  1. 如果两个 HashMap 填充了相同的键,其元素以相同的顺序插入,则在其键上生成相同的迭代顺序。正如我上面写的,我倾向于认为他们这样做。
  2. 如果 QPID 更改其消息元素的顺序以进行某种对齐,从而优化传输。或者 JMS 层可能会改变这个顺序?

编辑

我认为这个问题的第一部分值得提出自己的问题: HashMap 元素的顺序是否可重现?

看起来 HashMaps 不应该改变,但它根本不能保证,它可以在 HashMap 实现改变的第一刻改变。

现在,这个问题应该集中在 QPID 方面。

0 投票
1 回答
522 浏览

java - 使用 Java 的 Qpid 异步消息传递

我是 Qpid 和 JMS 的新手,我正在尝试使用 Qpid Java 代理制作一个非常简单的 Java 应用程序。

我正在实现这个示例,它只是发送和接收预定义的消息。
http://qpid.apache.org/releases/qpid-0.24/qpid-jms/examples/Hello.java.html

我将应用程序分为两部分,消费者生产者

如果我先启动示例的消费者部分,然后启动生产者部分,一切正常,消息被消费。

但是如果我先启动生产者然后启动消费者,消息就会丢失。

换句话说,我如何存储生产者发送的消息,以便以后使用消费者应用程序检索它们?

提前致谢!

0 投票
1 回答
832 浏览

boost - LNK1104:无法打开文件'boost_thread-vc100-mt-gd-1_55.lib'

我在 windows xp 上构建 qpid cpp 解决方案时遇到困难

我已经安装了 Boost 1.55.0、Python 2.7、Ruby 2.0.0 和 CMake 2.8

然后我为 Python、Ruby 和 CMake 添加了环境变量路径,然后 Boost 变量设置如下

BOOST_ROOT C:\Boost

BOOST_LIBRARYDIR C:\Boost\lib

BOOST_INCLUDEDIR C:\Boost\include

我使用命令提示符下的以下命令构建 Boost

引导程序

.\b2

我已经下载了 qpid-cpp-0.26,然后我在命令提示符下使用以下命令构建 qpid

执行上述命令已生成 qpid 的解决方案文件

然后我从解决方案文件中打开 qpid 以在 Visual Studio 2010 中构建,当我尝试构建解决方案时,它在 qpidCommon 中给了我以下错误

无法打开文件'boost_thread-vc100-mt-gd-1_55.lib'

经过一番搜索,我想出了类似的解决方案

在预处理器定义中添加“BOOST_ALL_DYN_LINK”

在链接器中添加库路径 - 常规 - 附加库目录

但上述解决方案对我不起作用

有任何想法吗?