gpt4 book ai didi

java - 自动启动 false 不适用于 DefaultMessageListenerContainer

转载 作者:行者123 更新时间:2023-12-02 01:17:07 27 4
gpt4 key购买 nike

我正在使用 spring 集成来监听 ibm mq,我想在 hibernate 模式下部署我的应用程序并在需要的时间启动它。因此,我使用了 DefaultMessageListenerContainer 的自动启动 false 。但一旦我启动我的应用程序,它就会开始从队列中读取。队列已存在,并且其他一些应用程序已在从该队列中读取数据。我不希望我的应用程序在部署后立即开始读取。

@Bean()
public DefaultMessageListenerContainer pagn2utcContainer() {
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConnectionFactory(mqConnectionFactory);
container.setMessageListener(sita2pagnRcvQueueListener());
container.setDestinationName(jetstarFromArinc);
container.setAutoStartup(false);
return container;
}

@Bean()
public ChannelPublishingJmsMessageListener sita2pagnRcvQueueListener() {
ChannelPublishingJmsMessageListener listener = new ChannelPublishingJmsMessageListener();
listener.setRequestChannelName("arinc2pagnRcvChannel");
return listener;
}

@Bean
public JmsMessageDrivenEndpoint sita2pagnInbound() {
return new JmsMessageDrivenEndpoint(pagn2utcContainer(), sita2pagnRcvQueueListener());
}

@Bean
public MQQueueConnectionFactory wmqQueueConnectionFactory() throws JMSException {
MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
mqQueueConnectionFactory.setHostName(host);
mqQueueConnectionFactory.setChannel(channel);
mqQueueConnectionFactory.setPort(Integer.parseInt(port));
mqQueueConnectionFactory.setQueueManager(queueManager);
mqQueueConnectionFactory.setTransportType(1);
return mqQueueConnectionFactory;
}

@ServiceActivator(inputChannel = "arinc2pagnRcvChannel", outputChannel = "nullChannel")
public Message<String> arinc2pagnRcv(Message<String> message) {
return message;
}

最佳答案

容器的生命周期由端点管理。您还需要在 JmsMessageDrivenEndpoint 上将 autoStartup 设置为 false

关于java - 自动启动 false 不适用于 DefaultMessageListenerContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57654277/

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