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

标签 java jms spring-integration ibm-mq

我正在使用 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/

相关文章:

java - 在 Java 中向 UI 显示控制台输出

java - 我应该使用 'synchronized' 版本作为 'onMessage' 中的集合消息吗?

java - HornetQ 重启后不持久化消息

java - ImapIdleChannelAdapter javax.mail.AuthenticationFailedException : [ALERT] Too many simultaneous connections

java - Spring Integration 中取消执行流程

java - 如何通过帮助反射获取通用字段类型(字符串表示形式) - Java?

java - 第二个数字在 1 到 5 范围内(含)是什么意思?

java - 为什么动态方法调度和父类(super class)变量可以引用子类对象?

java - TIBCO JMS jar 文件

tcp - Spring Integration tcp客户端多连接