1

我们使用 HornetQ 核心 API 来从 HornetQClient 创建 ServerLocator。ServerLocator 用于创建队列。这是代码:

TransportConfiguration connectorConfig = new TransportConfiguration(InVMConnectorFactory.class.getName());

ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(connectorConfig);

int ackBatchSize = ConfigWrapperHelper.getIntParameter(ProductMarkingConfigParamEnum.ACK_BATCH_SIZE_FOR_JMS_QUEUES);
locator.setAckBatchSize(ackBatchSize);
locator.setConsumerWindowSize(CONSUMER_WINDOW_SIZE);
locator.setClientFailureCheckPeriod(Long.MAX_VALUE);
locator.setConnectionTTL(-1);

ClientSessionFactory  clientSessionFactory = locator.createSessionFactory(connectorConfig);

ClientSession clientSession = _clientSessionFactory.createSession(XA, AUTO_COMMIT_SENDS, AUTO_COMMIT_ACKS);
clientSession.createQueue(queueName, queueName, IS_DURABLE);

问题是我们需要为每个队列配置 max-size-bytes 和 te address-full-policy。

我知道如何通过 XML 中的来执行此操作,但由于我使用 hornetq 核心来配置队列,因此还需要通过代码配置这些参数。

我看到有一个名为 AddressSettings 的类,可以在其中设置这些参数。

我的问题是 - 如何将此 AddressSettings 对象配置到 ServerLocator 中?

或者 - 是否有另一种方法可以在从 HornetQCLient 创建的 ServerLocator 中配置这些参数?

4

1 回答 1

2

AddressSettings 是服务器的属性,您不能从客户端设置它。您可以在 HornetQServer 上使用它,或者更改等效的 XML。

AddressSettings 基于通配符。因此,您可以创建一个地址设置,以根据您的规则匹配您的队列名称。

如果您使用的是嵌入式服务器,则可以使用:

server.getAddressSettingsRepository().addMatch("<your-expression-matchin your queue(s)", setting);

要使用 XML 进行配置,请查看文档的这一部分:

http://docs.jboss.org/hornetq/2.2.14.Final/user-manual/en/html/queue-attributes.html#queue-attributes.address-settings

在 JBoss 7 上,可以在standalone-all.xml(或任何包含 hornetq / 消息传递的独立 *.xml)中找到相同的 XML 片段

于 2013-04-08T12:54:59.927 回答