2013-09-27 80 views
1

我對wso2消息代理和poc工作相當陌生。 我們正在嘗試在RabbitMQ C#中使用WSO2 Message Broker。 當我將隊列綁定到扇出交換時,我在使用者代碼中出現錯誤。 這裏是出現了錯誤代碼: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> 

當代理啓動時,我沒有看到任何錯誤。

我不確定我是否缺少設置或代碼中的任何內容,或者是否有消息代理支持扇出交換? 我找不到任何這種情況下的例子。 任何幫助表示讚賞!

回答

0

據我研究過這個問題,我可以告訴WSO2 Message Broker只支持Direct和Topic交換類型。不支持FanOut和Headers交換類型,並且在我使用它們時失敗。 WSO2 Message Broker由Andes broker engine供電。安第斯的文件只討論基於隊列&主題的兩種消息模式,並沒有談論任何使用的交換類型。通過反編譯WSO2 Message Broker JAR文件進一步挖掘源代碼,我看到使用了「amq.direct」,「amq.topic」,「amq.fanout」和「amq.match」(標題)交換名稱,但沒有確定是否全部實施。