我有一个相当简单的代码,它使用Spring的RabbitTemplate
向RabbitMQ发送消息。代码对接收消息不感兴趣,这是一个简单的 fire and forget 场景。
rabbitTemplate.convertAndSend(exchange, routingKey, payload);
模板是这样创建的(请注意我使用的是交易渠道):
@Bean
public RabbitTemplate rabbitTemplate() {
val rabbitTemplate = new RabbitTemplate(connectionFactory());
rabbitTemplate.setChannelTransacted(true);
rabbitTemplate.setMessageConverter(jsonConverter());
return rabbitTemplate;
}
当RabbitMQ服务器超载并且此呼叫挂了很长时间并且从未超时时,我遇到了一个问题。连接本身没有死,但是RabbitMQ服务器几乎拥有完整的RAM和100%的CPU使用率,因此没有响应。
有没有办法配置Spring的RabbitTemplate
或基础AmqpTemplate
,如果它阻塞的时间太长,就会超时一次?