我正在构建一个简单的连接器组件,具有以下职责:
打开、保持和管理与外部服务的连接(即在后台运行)。
将传入数据解析为逻辑消息并将这些消息传递给业务逻辑组件。
从业务逻辑向外部服务发送逻辑消息。
我还没有决定如何设计go中连接器的接口。
变体 A) 入站通道,出站消息的函数调用
// Listen for inbound messages.
// Inbound messages are delivered to the provided channel.
func Listen(msg chan *Message) {...}
// Deliver msg to service
func Send(msg *Message) {...}
变体 B) 用于入站和出站消息的通道
// Listen for inbound messages + send outbound messages.
// Inbound messages are delivered to the provided msgIn channel.
// To send a message, put a message into the msgOut channel.
func ListenAndSend(msgIn chan *Message, msgOut chan *Message) {...}
变体 B 对我来说似乎更干净、更“像”,但我正在寻找以下问题的答案:
有没有一种“惯用”的方式来做到这一点?
或者,在哪些情况下应该首选变体 A 或 B?
此类问题的任何其他显着变体?
守候你守候我
相关分类