C# 通配符如何在wso2/rabbitMq/c主题消息传递中工作?

C# 通配符如何在wso2/rabbitMq/c主题消息传递中工作?,c#,wso2,rabbitmq,C#,Wso2,Rabbitmq,如果我向wso2主题发布消息,如下所示: channel.BasicPublish(someExchangeName,"farm.cow.brown",null,someMessage); 如果我正在收听路由密钥farm.cow.brown,我可以检索消息: channel.QueueBind(someQueueName,someExchangeName,"farm.cow.brown"); 我想如果我在听这样的变化,我也应该能够得到信息: channel.QueueBind(someQue

如果我向wso2主题发布消息,如下所示:

channel.BasicPublish(someExchangeName,"farm.cow.brown",null,someMessage);
如果我正在收听路由密钥farm.cow.brown,我可以检索消息:

channel.QueueBind(someQueueName,someExchangeName,"farm.cow.brown");
我想如果我在听这样的变化,我也应该能够得到信息:

channel.QueueBind(someQueueName,someExchangeName,"farm.cow.*");
在上面的两个听力示例中,第一个有效,第二个从未有效,无论尝试的路由键组合是farm.cow.*,farm.*.brown,farm.cow.,,农场等等

我正在使用rabbitMq和c连接到wso2


谢谢。

这对我来说很有用。似乎要使用通配符侦听多个主题/路由路径,每个主题都需要存在队列

这就是我的意思:考虑FAMO.CO.B.和布朗.F.W.怀特和一个听众的路线农场。奶牛。*/P> 如果farm.cow.brown上存在队列,但farm.cow.white上不存在队列,则我只会将消息发布到farm.cow.brown,即使farm.cow.white存在并且正在将消息发布到它

如果farm.cow.brown上有队列,farm.cow.white上有队列,farm.cow.*会将所有消息发布到farm.cow.brown并发布到farm.cow.white

如果两者都没有队列,则farm.cow.*不会重试发布到farm.cow.brown和farm.cow.white的消息

另外,上面的farm.cow.*示例是使用farm的等效工作

重申一下,使用通配符仅检索具有现有队列或订阅的主题的消息


这是我的经验。我已经测试了几天了,这似乎是一致的行为。

您是如何声明exchange的?@Fung channel.ExchangedClareExchangeName,ExchangeType.Topic,false,true,null-该语句与上述问题相关吗?示例2中的路由密钥看起来不错,我也测试过。我怀疑交换类型可能设置为direct而不是topic。@冯如果是这样,我认为示例1将无法工作