WeEvent

    简单的接口调用异常一般从错误码中就可以得到答案WeEvent错误码 。有任何意见和建议,欢迎你参与WeEvent项目讨论 。

    • 怎么部署WeEventFISCO-BCOS

    建议将WeEventFISCO-BCOS节点部署在同一网段/逻辑区,比如DMZ区。

    • WeEvent的服务访问授权机制是怎么样的?

    WeEvent访问权限控制基于HTTPS + IP白名单,STOMPMQTT协议还支持协议定义的账号/密码机制。

    • 如何选择各种接入协议,JsonRPCRESTfulSTOMP还是MQTT

      • Java程序
        • 如果是Spring服务,有内置的org.springframework.boot:spring-boot-starter-websocket支持,推荐使用STOMP
        • 如果是其他Java程序,建议使用WeEvent提供的Java SDK
      • MQTT主要面向物联网IoT设备的接入。
    • WeEvent服务的高可用性方案是怎么样的?
    • 使用长连接的协议,比如STOMP这部分功能基于长连接,订阅上下文以连接为中心,连接关闭则订阅会自动关闭。这种属于集群Cluster方案。WeEvent通过Nginx的负载均衡Load balance实现。
    • 使用短链接的协议,比如JsonRPC/RESTful/MQTT这部分功能基于短连接,事件订阅的上下文不依赖于连接,连接关闭后订阅仍然存在。这种属于主备Replication方案。WeEvent通过Zookeeper实现,如果没有为WeEvent服务配置Zookeeper服务,则无法使用这部分功能。

    WeEvent不处理发布事件的去重。

    当服务超时或者机器宕机时,一般的逻辑是重试,这种策略很容易出现重复请求。但是整个业务系统内,不只在WeEevnt服务的边界会出现这种情况,任何一个服务边界都会出现。 建议业务统一处理,比如在事件内容里带一个唯一IDUUID,消费的时候使用字段来判断该事件是否已经处理过。

    注意:EventID不是用来去重的,同一事件每成功发布一次,都会生成不同的EventID

    • 服务状态检查脚本check-service.sh出现"deploy contract failed"

      • 检查WeEventFISCO-BCOS的连接及其配置。
      • 检查FISCO-BCOS节点是否正常出块。
    • WeEvent事件内容支持的最大长度是多少?
    • WeEvent到区块链FISCO-BCOS节点之间的网络故障怎么处理?

    建议为WeEvent配置2个属于不同网段的FISCO-BCOS节点。这样WeEvent服务会随机选用一个可用的节点使用,做到一定程度的网络容灾。

    • 怎么使用通配符进行订阅WeEvent支持通配符按层次订阅,和MQTT的定义完全一致。包括层次分隔符”/”,单层通配符”+”,多层通配符”#”。例如,“#”可以订阅到系统内所有的主题。“com/+”可以订阅到主题“com/weevent”和“com/webank“,但是无法订阅到“com/weevent/abc”。“com/#”则可以订阅到上述三个主题。详情请参见MQTT协议

    这个问题涉及到JDK加密算法的实现。Oracle JDK里带了这个算法实现,Open JDK直到 1.9版本才有。所以在CentOS系统中,如果使用 Open JDK 1.9以下版本,WeEvent启动时会出现以下异常。请升级Open JDK版本到1.9或者使用。

    • TODO