gpt4 book ai didi

java - Spring Boot rabbit mq spring.rabbitmq.listener.simple.concurrency 从不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:49:53 25 4
gpt4 key购买 nike

在SpringBoot rabbit mq项目中,我有这样的配置。

@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 内使用它们,它们将进入死信队列。

现在,我想用 spring application.properties 进一步配置监听器,但它们对它没有任何影响。例如。我设置了 spring.rabbitmq.listener.simple.concurrency=3,它仍然创建了一个消费者,但是在代码中显式设置它是有效的。 Nether works 其他设置,

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有任何想法吗?我配置不正确吗?

最佳答案

您引用当前版本的 Spring Boot 的文档。这是您正在使用的还是旧的?此属性以前是 spring.rabbitmq.listener.concurrency,其中没有“simple”。

仔细检查版本,例如:https://docs.spring.io/spring-boot/docs/1.4.3.RELEASE/reference/html/common-application-properties.html

关于java - Spring Boot rabbit mq spring.rabbitmq.listener.simple.concurrency 从不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45415376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com