Apache.NMS.ActiveMQ&;C#-如何设置“;strictOrderDispatch”;在IDest
本文关键字:设置 strictOrderDispatch IDest 何设置 ActiveMQ NMS amp C#- Apache | 更新日期: 2023-09-27 17:57:42
如何在IDestination Queue上将"strictOrderDispatch"属性设置为true?(在C#中,使用Apache.NMS.ActiveMQ(1.2版)(最好是代码,而不是XML))。
背景:我正试图将消费者部署到具有多个网络接口的机器上,但我一直收到一个错误:
Apache.NMS.ActiveMQ.BrokerException:javax.jms.InvalidClientIDException:Broker:生产-客户端:Blahblah。生产已从"[同一机器上的其他IP之一]"连接
(如果我可以为每个IP指定不同的客户端ID,也许我可以绕过这个问题,但也不知道如何做到这一点)
在谷歌上搜索,我看到一个关于"每个目的地的政策"的页面
但我在C#中找不到任何关于如何做到这一点的例子。我看到的最近的一页是:http://activemq.apache.org/nms/examples.html显示
IDestination destination = SessionUtil.GetDestination(session, "queue://FOO.BAR");
但不涉及设置任何其他特定于队列的属性。
你知道如何在IDestination队列上设置"strictOrderDispatch"为true吗?
我有这样一个掌上明珠的时刻。这些设置是使用querystring语法指定的。
我想当我被难住的时候,我也应该看看JMS文档。当我在这里阅读Uri格式时,我终于明白了:http://camel.apache.org/jms.html
jms:[queue:|topic:]destinationName[?options]
每个目的地的设置都是在代理端进行的。NMS C#客户端本身不支持目标选项。您实际上在使用者上设置了选项。例如:
queue://FOO.BAR?consumer.DispatchAsync=true&consumer.nms.OptimizeAcknowledge=true
这在技术上配置了消费者,但完成了你想要做的事情
此外,strictOrderDispatch
不是消费者端的选项,因为它没有意义。让一些消费者请求它而另一些消费者不请求它是不一致的。它应该是一个只在服务器端设置。