切换主题
MQ 使用
服务通过 MQ 实现集群消息分发与客户端上行消息收集,支持 Kafka 与 RabbitMQ。
下行消息(服务端 -> 客户端)
- 模型:
WebSocketMessage{ targetType, target, data }
- Kafka:写入
topic
,消息键使用targetType
;消费者按targetType
分发。 - RabbitMQ:发布到
exchange
,路由键使用routingKey
(建议单一键)。
支持的 targetType
:all
| user
| temp_user
| channel
上行消息(客户端 -> 服务端)
- 启用:
websocket.accept-client-message=true
- Kafka:写入
clientTopic
,消息键使用userId
- RabbitMQ:发布到
exchange
,路由键使用clientRoutingKey
关键配置说明
- Kafka 生产者:
acks
、retries
、batchSize
、lingerMs
、bufferMemory
- Kafka 消费者:
autoCommit
、offsetReset
、sessionTimeout
、heartbeatInterval
- RabbitMQ:
exchangeType
、durable
、deliveryMode
、priority
、expiration
示例:发布下行消息
json
POST /feign/publish
{
"targetType": "user",
"target": "u1001",
"data": "hello"
}
仅推送临时会话示例:
json
POST /feign/publish
{
"targetType": "temp_user",
"target": "TEMP_CODE_123",
"data": "hello temp"
}
示例:接收上行消息
- 客户端发送文本消息到服务端;当启用接收时,服务将写入 MQ 的
clientTopic
或clientRoutingKey
。