Spring boot SpringBoot-如何从MQ消息侦听器调用控制器

Spring boot SpringBoot-如何从MQ消息侦听器调用控制器,spring-boot,spring-mvc,spring-jms,Spring Boot,Spring Mvc,Spring Jms,我配置了一个JMS侦听器,用于接收来自IBM MQ的消息。一旦MQ中有消息,我想将消息发布到我的rest控制器 MQ JMS侦听器 public class MqMessageConsumer { private Logger log = LoggerFactory.getLogger(MqMessageConsumer.class); @JmsListener(destination = "${ibm.mq.queue-name}") public void rec

我配置了一个JMS侦听器,用于接收来自IBM MQ的消息。一旦MQ中有消息,我想将消息发布到我的rest控制器

MQ JMS侦听器

public class MqMessageConsumer {

    private Logger log = LoggerFactory.getLogger(MqMessageConsumer.class);

    @JmsListener(destination = "${ibm.mq.queue-name}")
    public void receiveMessage(String message) {
        log.info("There is a message in the queue");
        //invoke rest end point
        log.info(message);

        //invoke rest controller in case of MQ call.
    }

}
下面是我的RestController

@RequestMapping("/users")
public class UsersController {

    Logger logger = LoggerFactory.getLogger(UsersController.class);

    @PostMapping("/status/checkUser")
    public String getStatus() {
        return "details";
    }
}

您知道如何从MQ使用者类调用rest控制器吗?

您可以添加一个UsersService,并在使用者和控制器中使用它。一般来说,我们使控制器尽可能精简,并将业务逻辑放在服务中

代码可以是

@Service
public class UsersService {
    public String getStatus() {
        return "details";
    }
}

@Component
public class MqMessageConsumer {

    @Autowired UsersService usersService;

    @JmsListener(destination = "${ibm.mq.queue-name}")
    public void receiveMessage(String message) {
        usersService.getStatus();
    }
}

@RequestMapping("/users")
public class UsersController {

    @Autowired UsersService service;

    @PostMapping("/status/checkUser")
    public String getStatus() {
        return service.getStatus();
    }
}

您可以
@Autowire用户控制器
类。。。或者,最好将消息保存在数据库中。