Apache.NMS.ActiveMq ConnectionFactory 忽略代理中设置的预取 URL
Apache.NMS.ActiveMq ConnectionFactory ignores prefetch set in broker URL
这是我们用来 create/attach 我们队列的 URL:tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1
这会将 queuePrefetch 默认设置为 1000:
IConnectionFactory connectionFactory = new ConnectionFactory(queueServer);
connectionFactory = new SingleConnectionFactory(connectionFactory)
{
ReconnectOnException = true
};
如果我们使用下面的代码,它会适当地设置它:
IConnectionFactory connectionFactory = new ConnectionFactory(queueServer)
{
PrefetchPolicy = new PrefetchPolicy{QueuePrefetch = 1}
};
connectionFactory = new SingleConnectionFactory(connectionFactory)
{
ReconnectOnException = true
};
ConnectionFactory 忽略我们在 URL 中设置的预取是否有原因?我们在连接消费者时也尝试在 URL 中设置 consumer.prefetchSize,但似乎什么也没做。
NMS 库 URI 选项的前缀为 'nms.',而不是 'jms.',这就是导致您出现问题的原因。所以在你的情况下你需要使用:
nms.prefetchPolicy.queuePrefetch=1
这是我们用来 create/attach 我们队列的 URL:tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1
这会将 queuePrefetch 默认设置为 1000:
IConnectionFactory connectionFactory = new ConnectionFactory(queueServer);
connectionFactory = new SingleConnectionFactory(connectionFactory)
{
ReconnectOnException = true
};
如果我们使用下面的代码,它会适当地设置它:
IConnectionFactory connectionFactory = new ConnectionFactory(queueServer)
{
PrefetchPolicy = new PrefetchPolicy{QueuePrefetch = 1}
};
connectionFactory = new SingleConnectionFactory(connectionFactory)
{
ReconnectOnException = true
};
ConnectionFactory 忽略我们在 URL 中设置的预取是否有原因?我们在连接消费者时也尝试在 URL 中设置 consumer.prefetchSize,但似乎什么也没做。
NMS 库 URI 选项的前缀为 'nms.',而不是 'jms.',这就是导致您出现问题的原因。所以在你的情况下你需要使用:
nms.prefetchPolicy.queuePrefetch=1