代码之家  ›  专栏  ›  技术社区  ›  Seymur Asadov

爪哇春跺脚

  •  2
  • Seymur Asadov  · 技术社区  · 6 年前

    我有三个项目:

    1. javascript sockjs stomp客户端
    2. spring boot stomp端点和amqp
    3. 用于测试的spring boot amqp(rabbitlistener)客户端

      我正在使用rabbitmq消息代理(+stomp插件)并配置 AMQP公司 跺脚 端点正常..当我将消息发送到 拉比特模板 而第三个项目(spring boot amqp客户端进行测试)通常会订阅此消息,一切正常!!但javascript stomp客户端未收到此消息.. 当我用 simp消息模板 ,js客户端接收消息正常!

    javascript sockjs stomp客户端

            var socket = new SockJS('http://localhost:8090/hello');
            stompClient = Stomp.over(socket);
            stompClient.connect('guest','guest', function(frame) {
                setConnected(true);
                console.log('Connected: ' + frame);
                stompClient.subscribe('/topic/testqueue', function(greeting){
                    showGreeting(JSON.parse(greeting.body).content);
                });
            });
    

    spring boot stomp端点和amqp

        @Controller
        public class SampleController {
            Logger logger = Logger.getLogger(SampleController.class);
    
            @Autowired
            private RabbitTemplate rabbitTemplate;
    
            private SimpMessagingTemplate messagingTemplate;
    
            @Autowired
            public SampleController(SimpMessagingTemplate messagingTemplate) {
                this.messagingTemplate = messagingTemplate;
            }
    
            @GetMapping("/emit/{message}")
            @ResponseBody
            String queue1(@PathVariable("message") String message) throws Exception {
                logger.info("Emit to testqueue");
                rabbitTemplate.convertAndSend("/topic/testqueue", new Greeting("Salam olsun " + message));
                Thread.sleep(60000); // simulated delay
                return "Emit to testqueue";
            }
    }
    

    用于测试的Spring Boot AMQP客户端

    @Component
    public class RabbitMqListener {
        Logger logger = Logger.getLogger(RabbitMqListener.class);
    
        @RabbitListener(queues = "/topic/testqueue")
        public void processQueue1(String message) {
            logger.info("Received from queue : " + message);
        }
    }
    

    如何在rabbitmq中混合amqp和stomp协议?我想用amqp协议(rabbittemplate)从另一个项目发送消息,并从js stomp客户端(sockjs)接收此消息…谢谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Seymur Asadov    6 年前

    我变了 rabbitTemplate.convertAndSend("/topic/testqueue", ...) rabbitTemplate.convertAndSend("amq.topic","testqueue" ...) 所有的工作都很好),尤其要感谢阿泰姆·比兰的支持。祝你好运