wso2 消息代理是否支持扇出交换

本文关键字:扇出 交换 支持 是否 消息 代理 wso2 | 更新日期: 2023-09-27 18:33:02

我对 wso2 消息代理相当陌生,正在处理 poc。我们正在尝试将 WSO2 消息代理与 RabbitMQ C# 一起使用。当我将队列绑定到扇出交换时,我在消费者代码中收到错误。以下是出错的代码:

_channel.ExchangeDeclare("amq.fanout", "fanout");
string queueName = _channel.QueueDeclare();
_channel.QueueBind(queueName, "amq.fanout", "");

异常发生在此代码段的第三行(队列绑定(中。

这是错误AMQP 操作已中断:AMQP 关闭原因,由 Peer 发起,代码 = 504,文本="org.wso2.andes.AMQSecurity异常:权限被拒绝:绑定 [错误代码 403:访问被拒绝]",classId=50,methodId=20,原因=

我们使用的是 AMQP 0_9_1。

我看到 wso2 mb 默认情况下不提供扇出交换。我将以下代码片段添加到 qpid.virtualhosts.xml 文件中

   <exchange>
     <type>fanout</type>
     <name>amq.fanout</name>
   </exchange>

当代理启动时,我没有看到任何错误。

我不确定设置或代码中是否缺少任何内容,或者 wso2 消息代理是否支持扇出交换?我也找不到这种情况的任何例子。任何帮助不胜感激!

wso2 消息代理是否支持扇出交换

就我研究过这个问题而言,我可以告诉 WSO2 消息代理仅支持直接和主题交换类型。不支持扇出和标头交换类型,当我使用它们时它会失败。WSO2 消息代理由 Andes 代理引擎提供支持。Andes文档只讨论基于队列和主题的两种消息传递模式,而不讨论正在使用的任何交换类型。通过反编译 WSO2 Message Broker JAR 文件进一步挖掘源代码,我看到正在使用的"amq.direct"、"amq.topic"、"amq.fanout"和"amq.match"(标头(交换名称,但不确定是否全部实现。