切换主题
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。