【发布时间】:2018-07-02 13:16:19
【问题描述】:
我有以下情况:每次触发事件时,我都需要在 websocket 上发送消息。
MessageController.java
@Controller
public class MessageController {
@Autowired
private SimpMessagingTemplate template;
@RequestMapping(path="/messages", method=POST)
public void send(String message) {
this.template.convertAndSend("/topic/messages", message);
}
}
KafkaConsumeEventHandler.java
@Component
public class KafkaConsumeEventHandler implements ApplicationListener<KafkaConsumeEvent> {
private static final Logger LOGGER = LoggerFactory.getLogger(KafkaConsumeEventHandler.class);
public void onApplicationEvent(final KafkaConsumeEvent event) {
LOGGER.info("event detected: publishing...");
LOGGER.info("message to be published: {}",event.getMessage());
//INVOKE CONTROLLER TO SEND MESSAGE HERE
LOGGER.info("event published to websocket.");
}
}
是否可以在事件处理程序内部调用控制器的send() 方法?有没有更好的方法?
编辑
如果我在事件处理程序中执行this.template.convertAndSend("/topic/messages", message);(自动装配 SimMessagingTemplate),我会得到一个 nullPointerException
【问题讨论】:
标签: java spring events websocket