当前位置: 首页 > 知识库问答 >
问题:

在应用程序启动时不创建Spring AMQP-RabbitMQ连接

南宫云
2023-03-14
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.amqp</groupId>
    <artifactId>spring-rabbit</artifactId>
    <version>2.2.12.RELEASE</version>
</dependency>
@Configuration
public class RabbitConfiguration {

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory("myhost", 5672);
        connectionFactory.setUsername("example_name");
        connectionFactory.setPassword("example_pass");
        return connectionFactory;
    }

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

    @Bean
    public Queue declareQueue() {
        return new Queue("test_queue", true, false, false);
    }

    @Bean
    public DirectExchange declareDirectExchange() {
        return new DirectExchange("test_direct_exchange", true, false);
    }

    @Bean
    public Declarables declareBindings() {

        return new Declarables(
            new Binding("test_queue", DestinationType.QUEUE, "test_direct_exchange", "test_routing_key", null)
        );
    }
}

共有1个答案

鲁文昌
2023-03-14

如果您想在应用程序启动期间强制声明,并且没有任何消费者,您可以将actuator starter添加到类路径中,或者简单地自己创建共享连接。

@Bean
ApplicationRunner runner(ConnectionFactory cf) {
    return args -> cf.createConnection().close();
}

这不会关闭连接;如果要这样做,请调用cf.resetconnection()

如果您希望在代理关闭时启动应用程序,请执行以下操作。

@Bean
ApplicationRunner runner(ConnectionFactory cf) {
    return args -> {
        boolean open = false;
        while(!open) {
            try {
                cf.createConnection().close();
                open = true;
            }
            catch (Exception e) {
                Thread.sleep(5000);
            }
        }
    };
}
 类似资料:
  • 当我尝试运行spring boot应用程序时,我遇到了以下异常: 组织。springframework。豆。工厂BeanCreationException:创建名为“configurationPropertiesBeans”的bean时出错,该bean在类路径资源[org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebi

  • 我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与

  • Android Studio: Android Studio北极狐Beta 2和大黄蜂金丝雀1 AGP:7.1.0-alpha01 Firebase Analytics:com.google.firebase:Firebase-analytics-ktx:19.0.0 Firebase Crashlytics:com.google.firebase: Firebase-crashlytics-kt

  • 问题内容: 我有一个Java应用程序。 该应用程序具有一个设置,该设置决定该应用程序是否在启动时启动。 目前,我可以通过在“启动项目”文件夹中放置/删除快捷方式来实现此目的。 但是,我想知道是否有更好的方法来处理此行为。 编辑 是的,它是Windows。抱歉,之前没有清除该内容。 该应用程序具有一个用户可以在其中触发动作的UI,并且该应用程序在运行时会定期在后台运行一些任务。 @Peter,如何在

  • 我发现Android应用程序非常奇怪的错误,而在Android设备中安装应用程序时具有给定的流程。 > 已从Play商店(旧版)安装该应用程序。 启动应用程序(现在我在主屏幕上,即< code>HomeActivity)。 现在,我通过安装最新版本(正在生产版本,尚未发布到playstore)升级了应用程序。 单击启动器图标,等待主屏幕显示,然后按菜单按钮将应用程序置于后台。 现在,单击启动器图标

  • 一旦我将Java应用程序部署到IBM Bluemix,它就无法创建初始数据库连接,原因是以下错误: 正在构建新得Hibernate SessionFactory 2015-04-11 14:24:04[main]错误O.H.util.JDBCExceptionReporter-无法创建PoolableConnectionFactory(通信链接失败上次成功发送到服务器得数据包是0毫秒前.驱动程序未

  • 我无法在rabbitmq代理“CustomerQ”队列中发送消息。我已经通过spring Boot将rabbitmq broker配置为嵌入式服务器。 当代码试图连接/放入队列中的任何消息时,我得到以下错误: 路径为[]的上下文中servlet[dispatcherServlet]的servlet.Service()引发异常[请求处理失败;嵌套异常为org.SpringFramework.Mess

  • 一、 我与CachingConnectionFactory有一个SpringAMQP项目。我需要从AMQP连接获取一些属性,例如:状态、连接时间、通道和一些运行时度量。CachingConnectionFactory是否有任何指标支持(例如:https://www.rabbitmq.com/blog/2016/11/30/metrics-support-in-rabbitmq-java-clien