加入pub/sub方式的支持和单元测试