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

时间:2020-03-29 19:21:50

标签: 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 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控制器吗?

1 个答案:

答案 0 :(得分:1)

您可以添加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();
    }
}