有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JMSListener批注无法与REST服务一起使用

我正在使用“Spring Boot-2.1.5.RELEASE”和“Spring framework-5.1.7.RELEASE”。 JMS侦听器批注未从MQ队列中拾取消息。我的IntelliJ想法中也没有错误日志。 关于我的项目——我公开了一个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",containerFactory = "myFactory")
    public void pullMyMessaage(String message){
        System.out.println("Message is pulled..");
    }
}

我的主应用程序有@EnableJMS注释。在我的申请中。yml文件我提供了以下信息

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

我的Bean类配置是

我的JMS连接工厂如下所示

@Bean
    public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory,
                                                    DefaultJmsListenerContainerFactoryConfigurer configurer) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        configurer.configure(factory, connectionFactory);
    }

不知道我还缺什么。任何见解都会非常有用

而不是我现有的项目,如果我创建任何简单的演示项目,它会按预期工作


共 (1) 个答案

  1. # 1 楼答案

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

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