使用 AMQP 1.0 使用 Qpid 从客户端动态创建队列和主题
Posted
技术标签:
【中文标题】使用 AMQP 1.0 使用 Qpid 从客户端动态创建队列和主题【英文标题】:Dynamically create queues and topics from the client with Qpid using AMQP 1.0 【发布时间】:2019-08-19 11:02:58 【问题描述】:我正在尝试将我们的旧 Qpid 设置(基于 AMQP 0-X)升级到基于 AMQP 1.0 的 Qpid 的最新质子版本,并遇到了从客户端动态创建持久或非持久队列/主题的问题.我们曾经能够使用 Spring 的 jms-generic:queue:someQueueName
(或在我们的某些情况下为主题)来做到这一点,它最终会在通过动态目标解析器后为我们创建队列或主题。但是,这似乎不再是这种情况,因为 createQueue/Topic
不再创建实际的队列或主题(至少我在 JMS 文档上读到的关于 createQueue/Topic
的内容)。
所以我的担忧最终归结为:
1) 是否仍然可以使用最新的 Qpid JMS 和 Broker-J 动态创建队列和主题,
2) 如果是这样,我该如何使用 Qpid JMS 和 Broker-J 来实现它?
提前感谢您的回复。
旁注:我完全意识到这是一个非常简单的高级概述,因此我可以根据需要提供更多详细信息。我只是希望有人能够在我尝试继续 (2) 之前明确回答 (1)。
【问题讨论】:
【参考方案1】:新的 JMS 客户端没有根据地址字符串自动创建队列的规定;部分原因是 AMQP 1.0 还没有定义创建队列的通用机制。
Qpid Broker-J 确实支持创建队列/交换/等。通过管理协议 - 但其他代理/服务尚未对此进行标准化。
Broker 系统测试使用 AMQP 管理来动态创建实体...https://github.com/apache/qpid-broker-j/blob/master/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/AmqpManagementFacade.java
【讨论】:
感谢@Rob 的评论。我很抱歉没有尽快回复。实际上,在我最初提出问题的那天,我发现了这些信息,但忘记更新我的发现。在根据 Broker-J 源代码中的一些线索对队列和主题 uris 进行细微更改后,我能够让 Broker-J 动态创建队列和主题。现在我只需要弄清楚如何告诉经纪人让它们耐用!以上是关于使用 AMQP 1.0 使用 Qpid 从客户端动态创建队列和主题的主要内容,如果未能解决你的问题,请参考以下文章
从 Qpid JMS 客户端启用 AMQP 1.0 插件连接到 RabbitMQ 3.7.18 时出现错误匹配错误
使用 Spring、ActiveMQ 和 Qpid 进行集成测试
如何使用 qpid-jms-client 创建 RabbitMQ 持久队列?
AMQP Qpid Proton - 无法将消息发送到超过 256 个队列
解决Qpid与RabbitMQ端口冲突问题(epmd reports: node rabbit’ not running at all),RabbitMQ 3.11修改AMQP端口