Details
Description
The following queue declaration will result in a queue being declared with auto delete and exclusive set to false:
@RabbitListener(bindings = @QueueBinding( value = @Queue(autoDelete = "true", exclusive = "true"), exchange = @Exchange(value = "myFanout", type = ExchangeTypes.FANOUT, durable = "true") ))
due to the following code in RabbitListenerAnnotationBeanProcessor:
if (!StringUtils.hasText(queueName)) { queueName = UUID.randomUUID().toString(); if (!StringUtils.hasText(bindingQueue.exclusive())) { exclusive = true; } if (!StringUtils.hasText(bindingQueue.autoDelete())) { autoDelete = true; } } else { exclusive = resolveExpressionAsBoolean(bindingQueue.exclusive()); autoDelete = resolveExpressionAsBoolean(bindingQueue.autoDelete()); }
Making them exclusive and auto delete by default when using a random name seems like a good idea, but it should probably be changed to something like:
String e = bindingQueue.exclusive(); if (!StringUtils.hasText(e) || resolveExpressionAsBoolean(e)) { exclusive = true }