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

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

我配置了一个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控制器吗?

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

您可以添加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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.