1

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

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

异常发生在此代码段的第三行 (QueueBind)。

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

我们正在使用 AMQP 0_9_1。

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

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

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

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

4

1 回答 1

0

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

于 2013-12-10T11:07:05.350 回答