1

我编写了示例 spring amqp 生产者,它在 RabbitMQ 服务器上运行,该服务器发送消息并使用 Spring AMQP 使用 MessageListener 使用这些消息。在这里,我想将队列和消息持久性设置为 false。您能否请任何人帮助我了解如何使用注释将“持久”标志设置为 false。

这是示例代码

@Configuration
public class ProducerConfiguration {

    protected final String queueName = "hello.queue";

    @Bean
    public RabbitTemplate rabbitTemplate() {
        RabbitTemplate template = new RabbitTemplate(connectionFactory());
        template.setRoutingKey(this.queueName);
        template.setQueue(this.queueName);
        return template;
    }

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory("localhost");
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        return connectionFactory;
    }
}


public class Producer {

    public static void main(String[] args) throws Exception {
        new Producer().send();
    }

    public void send() {

        ApplicationContext context = new AnnotationConfigApplicationContext(
                ProducerConfiguration.class);
        RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
        for (int i = 1; i <= 10; i++) {
            rabbitTemplate.convertAndSend(i);
        }
    }

}

提前致谢。

4

1 回答 1

2
@Configuration
public class Config {

    @Bean
    public ConnectionFactory connectionFactory() {
        return new CachingConnectionFactory();
    }

    @Bean
    public Queue foo() {
        return new Queue("foo", false);
    }

    @Bean
    public RabbitAdmin rabbitAdmin() {
        return new RabbitAdmin(connectionFactory());
    }
}

兔子管理员将在第一次打开连接时声明队列。请注意,您不能将队列从持久更改为不持久;先删除它。

于 2013-08-28T14:11:57.120 回答