我有以下代码:
@Controller
@EnableScheduling
public class QuoteController {
@Scheduled(fixedDelay=5000)
@SendTo(value="/topic/quote")
public String sendPrice() {
return "message from scheduler";
}
}
并且它不会将消息发送到频道。但是以下代码有效:
@Controller
@EnableScheduling
public class QuoteController {
@Autowired
public SimpMessageSendingOperations messagingTemplate;
@Scheduled(fixedDelay=5000)
public String sendPrice() {
messagingTemplate.convertAndSend("/topic/quote", "message from scheduler");
}
}
答案 0 :(得分:0)
我们只应在由websocket调用的函数中使用@SendTo
批注,这是指用@MessageMapping
标注的函数。
如果您想以其他方式发送消息到队列,则应使用messagingTemplate.convertAndSend
。
@SendTo
的示例:
@MessageMapping("/hello") // from websocket
@SendTo("/topic/bla")
public String foo1(String message) {
return message;
}
.convertAndSend
的示例:
@Autowired
private SimpMessagingTemplate template;
@GetMapping("/{msg}") //from GET request
public void foo2(@PathVariable String msg) {
template.convertAndSend("/topic/bla", msg);
}