Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

一些OMS的个人理解 #2

Open
FelixSeptem opened this issue Nov 24, 2018 · 1 comment
Open

一些OMS的个人理解 #2

FelixSeptem opened this issue Nov 24, 2018 · 1 comment

Comments

@FelixSeptem
Copy link

domain architecture

Namespace

一个独立的命名空间。OMS规定使用MessagingAccessPoint(这里的鉴权形式包括token和password两种形式?)来获取指定namespace的相关权限。

Producer

这里是否需要支持多条messaging事务发送?[ref:java version]

  • Producer 包含一组发送单条message的方法
  • BatchMessageSender 为批量发送做优化

Consumer

  • PullConsumer 主动拉取消息,直接提交消息处理结果,仅支持从单一固定队列拉取
  • PushConsumer 从多个OpenMessaging Server获取推送消息,通过ReceivedMessageContext(这里不是很理解,不知道python的context是否适合同样的实现)回写消息处理结果
  • StreamingConsumer 面向流系统的设计,类似从迭代器获取消息

Queue

可以通过routing形式或者直接从producer获取

Routing

<source queue, destination queue, expression>(个人理解:这里的expression是指源到目的队列的匹配规则)组成的三元组。

manager

开发者用来管理namespace,queue,routing等信息

TODO:
数据字典(OMS,queue,producer,consumer,routing的metadata)
ResponseStatusCode(ref:java version)
Exceptions(ref:java version)

@duhengforever PTAL

@duhengforever
Copy link

@FelixSeptem
(1)关于命名空间的鉴权是由crudentialID来进行的,但是在于鉴权系统交互逻辑不做强限制。
(2)Producer暂时不考虑支持多条消息的事务性发送,且在初期,python也可以考虑暂时先不支持事务消息发送接口;Producer目前有send多条消息的接口,请参考Java的interface
(3)Consumer在拉取消息的时候,需要绑定到队列上,此队列为逻辑队列,并非是物理队列,可以理解为绑定到一个目标地址(如topic或者queue),Push方式仅仅需要注册io.openmessaging.consumer.MessageListener即可,context是为了在接收到消息后进行手工ack,此处不需要保持跟Java的强一致,参考python的语言特点语义上满足即可。StreamingConsumer目前已经去掉,请在repo中拉取最新代码。
(4)Queue,routing,manger请参考最新代码。

(5)数据字典是我们是我们后续要做的东西,现在可以仅仅做错误码或者异常的定义。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants