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

使用Spring Rabbitmq Stomp的持久队列

章嘉致
2023-03-14

我对Spring和RabbitMQ有以下配置:

    @Bean
    public TopicExchange streamingExchange(@Qualifier("admin") final RabbitAdmin rabbitAdmin) {
        TopicExchange topicExchange = new TopicExchange(exchangeName, true, false);
        topicExchange.setAdminsThatShouldDeclare(rabbitAdmin);
        return topicExchange;
    }

    @Override
    public void configureMessageBroker(final MessageBrokerRegistry config) {
        config.enableStompBrokerRelay("/my_stream", "/test").setRelayHost(host)
        .setSystemLogin(username).setSystemPasscode(password).setClientLogin(username)
                .setClientPasscode(password);
    }

    @Override
    public void registerStompEndpoints(final StompEndpointRegistry registry) {
        registry.addEndpoint("/test").setAllowedOrigins("*").withSockJS();
    }

为了防止这种情况,我想创建持久队列(因为这些队列的持久度设置为false,自动删除设置为true)。如果不是,我想在这些队列上设置一些过期时间(例如,1小时或其他时间)。从RabbitMQ文档来看,我们似乎可以在头中传递这些值,但是,这只适用于版本3.6.0以后的版本,因为我们有3.5.4,它不是一个选项。

有没有其他方法可以配置它?(另一种方法是为connect请求添加某种侦听器,并以编程方式配置队列参数?我不确定这是否可行,因为我不太了解spring rabbitmq stomp插件)

共有1个答案

董喜
2023-03-14

想知道您是否尝试过使用rabbitmqadmin工具将队列声明为持久队列?

rabbitmqadmin declare queue name=your-queue durable=true

管理工具可从以下网址下载https://www.rabbitmq.com/management-cli.html

 类似资料:
  • 我认为最初的作者认为这将创建一个持久的队列,但显然不是。我找不到这方面的好文档,想知道是否有人能证实/否认这一点。 提前谢了。

  • 我向连接到JobLaunchingGateway的spring-integration通道发送一条消息,对于每个消息,JobLaunchingGateway尝试启动一个新的TaskExecutor。 让通道由一个持久队列(例如ActiveMQ)支持,让任务执行器池大小等于2。 我想对系统进行配置,以便当executor池大小已经使用时,新消息不会被JobLaunchingGateway使用,而是保

  • 我试图在Oracle中创建对多使用者队列的持久订阅。使用JMS Spring支持。这是一个Grails应用程序。 我的spring代码如下: 谁能给我指出正确的方向来创建一个持久订阅。我原以为我的“客户ID”和“订阅”值会为我做这件事。我需要在其他地方指定这些吗? 谢谢!

  • 因为正如我在Active MQ Artemis文档中看到的,持久值是一个布尔值,但在amqpnetlite库中它是一个uint,我的理解是,超过0的所有内容都应该是true,而0应该是false。 起初,这种行为非常奇怪:即使当Aretemis Web界面显示为持久队列时,一旦没有用户连接,它也会被删除。 我发现:ActiveMQ Artemis queue在关闭消费客户机后被删除,这描述了即使是

  • 要求:我们需要从JMS队列(由另一个应用程序发布)中检索一条消息,并将该消息持久保存在我们的JMS队列中。需要整个流是事务性的,所以如果消息不能持久化到下游JMS队列中,则不应该确认从上游JMS队列接收到的消息。我的配置如下 在这种情况下,我需要使用JmsTransactionManager,还是应该高于配置就足够了。我们可以处理重复的消息,所以我相信我们不需要XA事务。