我配置了一个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();
}
}