在SpringBoot兔MQ項目,我有這樣的配置。春天引導兔MQ spring.rabbitmq.listener.simple.concurrency永遠不會奏效
@EnableRabbit
@Configuration
public class MQConfig {
private final String primaryQueueName;
private final String deadLetterQueueName;
@Autowired
private ConnectionFactory cachingConnectionFactory;
public MQConfig(
@Value("${primaryQueue.name}")String primaryQueueName,
@Value("${deadLetterQueue.name}")String deadLetterQueueName){
this.primaryQueueName=primaryQueueName;
this.deadLetterQueueName=deadLetterQueueName;
}
@Bean
public Queue primaryQueue() {
Map<String, Object> args = new HashMap<String, Object>();
// The default exchange
args.put("x-dead-letter-exchange", "");
// Route to the incoming queue when the TTL occurs
args.put("x-dead-letter-routing-key", deadLetterQueueName);
// TTL 500 seconds
args.put("x-message-ttl", 300000);
return new Queue(primaryQueueName, false, false, false, args);
}
@Bean
public Queue deadLetterQueue() {
return new Queue(deadLetterQueueName);
}}
我的聽衆的樣子,
@Component
public class Receiver {
private static final Logger LOGGER = LoggerFactory.getLogger(Receiver.class);
@Autowired
private JavaMailSender mailSender;
@RabbitListener(queues = "${primaryQueue.name}")
public void receiveMessage(SimpleMailMessage message){
LOGGER.info("Sending email message : "+message);
try {
mailSender.send(message);
}catch(Exception e) {
LOGGER.error("Failed to deliver email",e);
throw e;
}
}}
到目前爲止好,消息來一次隊列,消費者消費他們,他們都去了死信隊列,如果由於某種原因,消費者不能使用它們給出TTL 300000
現在,我要帶彈簧application.properties進一步配置監聽器,但他們都對它沒有影響。 例如我設置spring.rabbitmq.listener.simple.concurrency = 3,但它仍然創建一個消費者,但是在代碼工作中明確地設置它。虛空工程等設置,
spring.rabbitmq.listener.simple.acknowledge-mode= # Acknowledge mode of container.
spring.rabbitmq.listener.simple.auto-startup=true # Start the container automatically on startup.
spring.rabbitmq.listener.simple.concurrency= # Minimum number of consumers.
spring.rabbitmq.listener.simple.default-requeue-rejected= # Whether or not to requeue delivery failures; default `true`.
spring.rabbitmq.listener.simple.idle-event-interval= # How often idle container events should be published in milliseconds.
spring.rabbitmq.listener.simple.max-concurrency= # Maximum number of consumers.
spring.rabbitmq.listener.simple.prefetch= # Number of messages to be handled in a single request. It should be greater than or equal to the transaction size (if used).
spring.rabbitmq.listener.simple.retry.enabled=false # Whether or not publishing retries are enabled.
spring.rabbitmq.listener.simple.retry.initial-interval=1000 # Interval between the first and second attempt to deliver a message.
spring.rabbitmq.listener.simple.retry.max-attempts=3 # Maximum number of attempts to deliver a message.
spring.rabbitmq.listener.simple.retry.max-interval=10000 # Maximum interval between attempts.
spring.rabbitmq.listener.simple.retry.multiplier=1.0 # A multiplier to apply to the previous delivery retry interval.
spring.rabbitmq.listener.simple.retry.stateless=true # Whether or not retry is stateless or stateful.
spring.rabbitmq.listener.simple.transaction-size=
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 任何想法?我配置錯誤嗎?