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吗?

Apache.NMS.ActiveMQ&;C#-如何设置“;strictOrderDispatch”;在IDest

我有这样一个掌上明珠的时刻。这些设置是使用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不是消费者端的选项,因为它没有意义。让一些消费者请求它而另一些消费者不请求它是不一致的。它应该是一个只在服务器端设置。