Frage

Gibt es eine Möglichkeit, a zu initialisieren? SimpleMessageListenerContainer als gestoppt?

d.h.Ich möchte keine JMS-Nachrichten konsumieren, bis ein Benutzer später eine Aktion ausführt, um den JMS-Container zu starten

Ich habe versucht anzurufen .stop() Sobald ich die Bohne erstelle ...aber es scheint noch zu früh zu sein.

Das spätere Aufrufen von „Stop/Start“ funktioniert einwandfrei, aber ich möchte nicht riskieren, Nachrichten zu verarbeiten, bis der Benutzer bereit ist.

War es hilfreich?

Lösung

Der SimpleMessageListenerContainer implementiert die SmartLifecycle Schnittstelle.Diese Schnittstelle definiert eine Methode isAutoStartup.Wenn diese Methode zurückkehrt true Die Komponente wird automatisch gestartet.

Die meisten Bohnen, die das implementieren SmartLifecycle Die Schnittstelle verfügt auch über eine Methode setAutoStartup um die Einstellung dieser Eigenschaft zu ermöglichen.Stellen Sie es ein false deaktiviert den automatischen Start der Komponente.

<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
    <property name="autoStartup" value="false" />
    // Other Properties initialization
</bean>

Oder in Java Config

@Bean
public SimpleMessageListenerContainer container() {
    SimpleMessageListenerContainer smlc = new SimpleMessageListenerContainer();
    smlc.setAutoStartup(false);
    ...
    return smlc;
}

Derzeit ist es nicht möglich, diese Eigenschaft mithilfe des JMS-Namespace festzulegen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top