gpt4 book ai didi

java - 使用 Spring Rabbitmq Stomp 的持久队列

转载 作者:行者123 更新时间:2023-11-29 09:31:52 25 4
gpt4 key购买 nike

我对 Spring 和 RabbitMQ 有以下配置:

Spring Boot : 1.2.7

RabbitMQ : 3.5.4

我正在使用以下 Spring bean 创建 Stomp 端点(我的配置类扩展 AbstractWebSocketMessageBrokerConfigurer):

    @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 documentation ,似乎我们可以在 header 中传递这些值,但是,这仅适用于 3.6.0 及更高版本,因为我们有 3.5.4,这不是一个选项。

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

最佳答案

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

rabbitmqadmin declare queue name=your-queue durable=true

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

关于java - 使用 Spring Rabbitmq Stomp 的持久队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35272855/

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