Spring boot SpringBoot-如何从MQ消息侦听器调用控制器
我配置了一个JMS侦听器,用于接收来自IBM MQ的消息。一旦MQ中有消息,我想将消息发布到我的rest控制器 MQ JMS侦听器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
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用户控制器类。。。或者,最好将消息保存在数据库中。