听众:
<bean id="msglistenerForAuditEvent" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsFactory"/>
<property name="sessionTransacted" value="true"/>
<property name="destinationName" value="test.event"/>
<property name="messageListener" ref="auditListener" />
</bean>
我想停止容器监听JMS消息并在一段时间后重新启动它?
能实现吗?
也许有更好的解决方案,但我认为这个可以适合:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.listener.DefaultMessageListenerContainer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
@Configuration
@EnableAsync
@EnableScheduling
public class AppConfig {
@Autowired
private DefaultMessageListenerContainer dmlc;
@Scheduled(fixedDelay = 5000)
public void start() {
if (!dmlc.isRunning()) {
dmlc.start();
}
}
@Scheduled(fixedDelay = 5000)
public void stop() {
if (dmlc.isRunning()) {
dmlc.stop();
}
}
// @Scheduled(fixedDelay = 5000)
// public void startOrStop() {
// if (dmlc.isRunning()) {
// dmlc.stop();
// } else {
// dmlc.start();
// }
// }
@Bean
public DefaultMessageListenerContainer dmlc() {
DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer();
// dmlc.set...
return dmlc;
}
}
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)