RabbitMQ - 使用 AMQP 和 STOMP 连接到同一个交易所
Posted
技术标签:
【中文标题】RabbitMQ - 使用 AMQP 和 STOMP 连接到同一个交易所【英文标题】:RabbitMQ - connect using AMQP and STOMP to same exchange 【发布时间】:2018-03-09 03:48:33 【问题描述】:我们使用 RabbitMQ 作为消息代理。 Producer1 使用 AMQP 连接,Producer2 使用 STOMP 协议连接,Consumer1 使用 AMQP 连接,Consumer2(使用 javascript)通过 websocket 使用 STOMP 连接。 (Producer1和consumer1使用spring cloud stream)
Test1:producer1使用AMQP发送消息时,在consumer1(AMQP)接收,在consumer2(STOMP)接收失败。当 producer1(AMQP) 发送消息并且队列被删除时,Consumer2 javascript 客户端立即断开连接。
Test2:当producer2使用STOMP发送消息时,consumer1(AMQP)和consumer 2(STOMP)接收,没有任何问题。
Test1 - 可能的情况吗?我们正在尝试由消费者使用 AMQP 和 STOMP 协议连接到 RabbitMQ 中的相同交换。当 AMQP 生产者发送消息时,STOMP 消费者正在断开连接。验证了 rabbitmq 和消费者日志。它没有在日志中提供太多信息。
【问题讨论】:
你发送什么样的数据; IIRC STOMP 仅支持文本。 消息是 UTF-8 类型。这应该是导致问题的原因。 (我正在使用 avro 与 spring 云流生产者(AMQP)进行序列化)。有什么方法可以使用 AMQP(spring 云流)和 STOMP(websocket 服务器)使用 rabbit MQ 作为消息代理进行通信? 【参考方案1】:由于 STOMP 仅支持文本。更改消息内容类型有效。
【讨论】:
以上是关于RabbitMQ - 使用 AMQP 和 STOMP 连接到同一个交易所的主要内容,如果未能解决你的问题,请参考以下文章