Java 有没有办法使用spring amqp库将rabbitmq预取计数设置为100000?
我试图在rabbitmq配置中将预取计数设置为100000,但它将34464设置为通道的预取计数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
@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的问题: