2016-02-08 2 views
2

У меня есть следующие конфигурации для Spring и RabbitMQ:Прочные очереди с использованием Spring RabbitMQ Stomp

Spring загрузки: 1.2.7

RabbitMQ: 3.5.4

Я использую после Spring beans для создания конечной точки Stomp (My config class extends 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 и auto-delete установлены в true), если нет, я хочу, чтобы в этих очередях было определенное количество истечений (например, 1 час или что нибудь). Из RabbitMQ documentation, похоже, мы можем передавать эти значения в заголовках, однако это применимо только для версий 3.6.0, так как у нас есть 3.5.4, это не вариант.

Есть ли другой способ, с помощью которого мы можем это настроить? (Другой подход заключается в том, чтобы добавить какой-то прослушиватель для запроса на соединение и настроить параметры очереди программным образом? Я не уверен, насколько это возможно, поскольку я мало знаю о плагине весеннего кролика-монтирования)

ответ

-1

Удивление, если вы пробовали объявив очередь долговечной, используя инструмент rabbitmqadmin?

rabbitmqadmin declare queue name=your-queue durable=true 

Admin Tool можно скачать здесь https://www.rabbitmq.com/management-cli.html