我是wso2消息经纪人的新手,并且在poc上工作。 我们正在尝试使用带有RabbitMQ C#的WSO2消息代理。 当我将队列绑定到扇出交换时,我在使用者代码中收到错误。 以下是出错的代码:
_channel.ExchangeDeclare("amq.fanout", "fanout");
string queueName = _channel.QueueDeclare();
_channel.QueueBind(queueName, "amq.fanout", "");
此代码段的第三行(QueueBind)发生异常。
这是错误 AMQP操作被中断:AMQP关闭原因,由Peer发起,代码= 504,text =“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消息代理是否支持扇出交换? 我也找不到这种情况的例子。 任何帮助表示赞赏!
答案 0 :(得分:0)
据我调查此问题,我可以告诉WSO2 Message Broker仅支持Direct和Topic交换类型。不支持FanOut和Headers交换类型,当我使用它们时它会失败。 WSO2 Message Broker由Andes broker engine提供支持。 Andes文档仅讨论基于队列和队列的两种消息传递模式。主题并没有谈论正在使用的任何交换类型。通过反编译WSO2 Message Broker JAR文件进一步挖掘源代码,我看到“amq.direct”,“amq.topic”,“amq.fanout”和“amq.match”(标题)交换名称正在使用,但不是确定是否全部实施。