首页 文章

Java Spring Stomp AMQP

提问于
浏览
2

我有三个项目:

  • Javascript SockJS STOMP客户端

  • Spring-boot STOMP endpoints 和AMQP

  • 用于测试的Spring-boot AMQP(RabbitListener)客户端

我正在使用RabbitMQ消息代理(Stomp插件)并正常配置 amqpstomp endpoints ..当我使用 RabbitTemplate 和第三个项目(spring-boot amqp客户端进行测试)向队列发送消息时,通常会订阅此消息,一切正常!但Javascript STOMP客户端没有收到此消息.. P.S.当我用 SimpMessagingTemplate 发送消息时,JS客户端收到消息就好了!

Javascript SockJS STOMP Client

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 endpoint and 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 client for testing

@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 回答

  • 0

    我被改为 rabbitTemplate.convertAndSend("/topic/testqueue", ...)rabbitTemplate.convertAndSend("amq.topic","testqueue" ...) 并且每个人都很好)))特别感谢Artem Bilan的支持 . 祝好运

相关问题