spring 在生产者和消费者之间发送消息不起作用

gorkyyrv  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(138)
  1. @RestController
  2. @RequestMapping("/api/producer")
  3. public class ProducerController {
  4. @Autowired
  5. private SimpMessagingTemplate messagingTemplate;
  6. private UserAuditRepository userAuditRepository;
  7. private static final Logger logger = LoggerFactory.getLogger(ProducerController.class);
  8. @Autowired
  9. public ProducerController(UserAuditRepository userAuditRepository) {
  10. this.userAuditRepository = userAuditRepository;
  11. }
  12. @PostMapping("/send-message/{userId}")
  13. public ModelAndView sendMessageToUser(@PathVariable String userId) {
  14. logger.info("Sending message to user: {}", userId);
  15. // Проверяем существование пользователя
  16. Optional<UserAudit> existingUser = userAuditRepository.findByUserId(userId);
  17. UserAudit userAudit = existingUser.orElseGet(() -> {
  18. UserAudit newUser = new UserAudit();
  19. newUser.setUserId(userId);
  20. return newUser;
  21. });
  22. MessageDto messageDto = new MessageDto(true, "gold", 123, "Hello World", userId);
  23. messagingTemplate.convertAndSendToUser(userId, "/topic/messages", messageDto);
  24. // После отправки сообщения, перенаправляем пользователя на страницу user-audit
  25. return new ModelAndView(new RedirectView("/consumersocket/api/consumer/user-audit", true));
  26. }
  27. }

个字符
两个微服务都启动了,输入密码后,从生产者到消费者的消息没有到达,消息没有写入数据库。http://localhost:8080/producersocket/api/producer/send-message server.servlet.context-path=/producersocket http://localhost:8081/consumersocket/api/consumer/user-audit
URL写得不一样,没什么帮助

r6l8ljro

r6l8ljro1#

processMessageFromProducer方法中的注解值似乎不正确。
当在生成器中触发convertAndSendToUser时,消息将发送到/user/{sessionId}/topic/messages通道。但是,使用者正在侦听/messages通道。
另外,@SendToUser会将方法结果以消息的形式发送到指定的通道。但是,由于processMessageFromProducer是一个void方法,我认为它不会正确工作。
您可以尝试以下更改:

  1. @MessageMapping("/user/{sessionId}/topic/messages")
  2. public void processMessageFromProducer(String sessionId, @Payload MessageDto messageDto) {
  3. ...
  4. }

字符串

相关问题