Rabbitmq Java Spring Stomp AMQP
我有三个项目:Rabbitmq Java Spring Stomp AMQP,rabbitmq,spring-amqp,stomp,sockjs,Rabbitmq,Spring Amqp,Stomp,Sockjs,我有三个项目: Javascript SockJS STOMP客户端 Spring boot STOMP端点和AMQP 用于测试的Spring boot AMQP(RabbitListener)客户端 我正在使用RabbitMQ message broker(+Stomp插件),并正常配置了amqp和Stomp端点。当我将消息发送到队列,并使用RabbitTemplate和第三个项目(用于测试的spring boot amqp客户端)正常订阅此消息时,一切正常!!但是Javascript S
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)接收此消息。。谢谢。我被
rabbitmplate.convertAndSend(“/topic/testqueue”,…)
改为rabbitmplate.convertAndSend(“amq.topic”,“testqueue”…)
,而且一切都很好)),特别感谢Artem Bilan的支持。祝你好运你确定你的应用程序配置中有一个enableStomBrokerRelay()
:当然。。我使用EnableStompBrokerReay实现了RabbitMQ。(主机、端口、用户名、密码)您是否有机会在GitHub上与我们分享一些简单的项目,让我们使用它并重现您的担忧?如果有一些自述文件以及如何复制的说明也会很好。请尝试找出混合使用AMQP和STOMP协议时缺少的内容:。尤其要注意对于发送帧,消息将使用路由键发送到amq.topic交换。
。因此,您的rabbitmplate.convertAndSend(“/topic/testqueue”,…)
听起来不太正确。感谢Artem,我将rabbitmplate.convertAndSend(“/topic/testqueue”,…)更改为rabbitmplate.convertAndSend(“amqp.topic”,“testqueue”…),并且一切正常)