JMSListener批注不能与REST服务一起使用

问题描述 投票:0回答:1

我正在使用“ Spring Boot-2.1.5.RELEASE”和“ Spring framework-5.1.7.RELEASE”。JMS侦听器批注未从MQ队列中选择消息。我的IntelliJ IDEA中也没有滚动错误日志。关于我的项目-我正在公开一个REST服务,该服务发送和接收来自MQ的消息(使用的JMSTemplate批注)。直到现在为止。现在,我必须添加另一个应该监听队列的类。因此,添加了@JMSListener批注,该批注未选择任何消息。任何见解都会非常有帮助。

pom具有以下指定的依赖项。

<dependency>
    <groupId>com.ibm.mq</groupId>
    <artifactId>mq-jms-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
    <groupId>com.ibm.mq</groupId>
    <artifactId>com.ibm.mq.allclient</artifactId>
    <version>9.1.4.0</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jms</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

该类具有以下指定的方法。

import org.springframework.jms.annotation.JmsListener;
@Component
public class PickMyMessage {
    @JmsListener(destination = "IN")
    public void pullMyMessaage(String message){
        System.out.println("Message is pulled..");
    }
}

我的主应用程序具有@EnableJMS批注。在我的application.yml文件中,我提供了以下信息。

ibm:
  mq:
    channel: MY.APP.SVRCONN
    connName: 192.168.0.1(1415)
    password: Pswd
    queueManager: QM01
    user: appsrv

我的Bean类配置是

@Bean
    public DefaultMessageHandlerMethodFactory handlerMethodFactory() {
        DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
        factory.setMessageConverter(messageConverter());

        return factory;
    }

    @Bean
    public MessageConverter messageConverter() {
        return new MappingJackson2MessageConverter();
    }

    @Override
    public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {
        registrar.setMessageHandlerMethodFactory(handlerMethodFactory());
    }

不确定我在这里还想念什么。任何见解都会非常有帮助。

代替我的现有项目,如果我创建任何简单的演示项目,它将按预期工作。

java spring-boot spring-jms
1个回答
0
投票

PickMyMessage不是Spring bean,这就是Spring忽略它的原因。将其声明为@Bean@Component

可能还有其他问题。但这是第一个需要解决的问题。

© www.soinside.com 2019 - 2024. All rights reserved.