Java 有没有办法使用spring amqp库将rabbitmq预取计数设置为100000?

Java 有没有办法使用spring amqp库将rabbitmq预取计数设置为100000?,java,spring,spring-boot,spring-amqp,Java,Spring,Spring Boot,Spring Amqp,我试图在rabbitmq配置中将预取计数设置为100000,但它将34464设置为通道的预取计数 @Bean public SimpleRabbitListenerContainerFactory reconFactory(ConnectionFactory connectionFactory, SimpleRabbitListenerContainerFactoryConfigurer configurer) { SimpleRabbitListenerContaine

我试图在rabbitmq配置中将预取计数设置为100000,但它将34464设置为通道的预取计数

@Bean
public SimpleRabbitListenerContainerFactory reconFactory(ConnectionFactory connectionFactory,
        SimpleRabbitListenerContainerFactoryConfigurer configurer) {
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    configurer.configure(factory, connectionFactory);
    factory.setMessageConverter(jsonMessageConverter());
    factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
    factory.setPrefetchCount(100000);
    factory.setErrorHandler(errorHandler());
    return factory;
}
希望完美计数设置为100000。

Spring(及其使用的amqp客户端)将1000000发送给代理

在我的经纪人那里,它减少到16960,所以它看起来是经纪人的财产

您应该在
RabbitMQ用户
Google组上询问关于RabbitMQ本身的问题,RabbitMQ工程师们在那里闲逛。它们不密切监视堆栈溢出


如果你在那里得到答案,你可能想把它添加到这里。

我花了很长时间才找到答案,因为我最近也遇到了同样的问题。简短的回答是:不

将预取计数指定为类型
short
,该类型被澄清为

java AMQP客户端库中似乎存在一个疏忽,即它接受
int
,而实际上它应该只接受
short

得到的是16960,因为这是相应32位整数的最高有效16位被截断的结果

较短的版本是,您可以将任何预取值设置为约32k(16位,2的互补)。但10万人是不可能的

我还建议在AMQP java客户端库项目中提交一个bug,因为允许设置int是非常误导的

--

更新我在rabbitmq amqp库中打开了一个关于int vs short的问题: