首页 / Java 平台(cloud-java) / subscription 订阅

职责概览

订阅模块 独立端口 48103 / gRPC 49103,管理订阅产品与能力、套餐权益、active 订阅、Seat 席位占用、订阅转移与绑定 Saga,并提供权益鉴权 gRPC 服务。

接口清单

Controller说明
AdminSubscriptionProductControllerSubscriptionProductCapabilityControllerSubscriptionCapabilityControllerSubscriptionActiveControllerSubscriptionSeatControllerSubscriptionRecordController产品/能力/active/seat/记录管理
AppAppSubscriptionControllerAppSubscriptionTransferControllerAppCapabilityDemoController用户订阅、转移与能力演示

关键实现

权益鉴权 gRPC

service SubscriptionEntitlementService {
  rpc HasDeviceCapability(HasDeviceCapabilityRequest) returns (HasDeviceCapabilityResponse);
  rpc BatchHasDeviceCapability(BatchHasDeviceCapabilityRequest) returns (BatchHasDeviceCapabilityResponse);
  rpc ListDeviceCapabilities(ListDeviceCapabilitiesRequest) returns (ListDeviceCapabilitiesResponse);
  rpc GetRequiredProducts(GetRequiredProductsRequest) returns (GetRequiredProductsResponse);
}
  • device_name(subject_id)校验能力码,如 DATA_REPORTFAMILY_SHARING
  • 供 Go IoT 网关等外部系统调用,判断设备是否拥有指定能力。

绑定 Saga

RocketMQ topic entrax-subscription-binding-saga-v1,Tag 即事件类型(统一常量 SubscriptionBindingSagaConstants):

事件语义
subscription.seat.reserve.requestedSeat 预占请求(IoT 发起)
subscription.seat.reserved / .reserve-failed / .payment-required预占结果
subscription.paid.activation.requested / .completed支付后激活
subscription.seat.release.requested / .released补偿释放
iot.binding.completed / .failed绑定最终结果

定时任务

  • SubscriptionExpireJob:订阅过期处理
  • SubscriptionBindingOutboxJob:绑定 Outbox 可靠发布

数据与维护注意

核心表:subscription_*(8 张):产品、产品能力、active、record、seat、transfer 等。

  • subscription_activesubscription_recordsubscription_seat 分别表达当前权益、变更记录与席位占用,不能只读一张表判断完整订阅状态。
  • subscription_seat 对租户内已占用 session/device guard 唯一;是否占用需同时判断状态字段。
  • 订阅主体/来源字段存在设备、会员等语义,查询时必须同时查看枚举与 Mapper 条件。