我有三个项目:
-
javascript sockjs stomp客户端
-
spring boot stomp端点和amqp
-
用于测试的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)接收此消息…谢谢。