用不同类型定义一个主题或为每种类型定义类型化主题更好吗?
is it better to define one topic with different types or to define typed-topic for each type?
用不同类型定义一个主题好还是为每种类型定义类型化主题好?
例如,
[topic]
foo
[message]
{
type: 'x',
data: [1,2,3]
}
或
[topic]
foo-x
[message]
{
data: [1,2,3]
}
根据 pub/sub-pricing,鉴于发送和传递的总消息是相同的,后一种情况似乎更便宜一些,因为消息大小。
但这只是定价,我认为可能有一些经验设计或模式来定义消息。在这种情况下可以考虑什么消息?
这里没有正确或错误的答案。在某种程度上,这取决于订阅者的性质。他们是对所有类型的消息感兴趣还是只对一种类型的消息感兴趣?如果是前者,那么消息中带有该类型的单个主题可能会更好。如果是后者,那么单独订阅可能会更好。另外,你有多少种?对于几十个或更多类型,管理单个主题可能会产生大量开销。
价格可能不是一个因素。如果您的消息很大,那么价格将由消息的内容决定。如果您的消息很小,那么它们将受到每个请求 1KB 的最低计费量的限制。类型成为一个因素的唯一方法是,如果您有非常小的消息,但将它们分批处理,使它们至少为 1KB。
如果您决定对消息中的类型进行编码,请考虑将其放入消息 attributes 而不是消息数据中。这样,您可以查看类型而无需解码整个消息,如果您想立即确认某些类型的消息而不是处理它们,这会很有帮助。
倾向于第二种方案。事实上,如果你想在特定主题上插入处理(功能、云 运行、AppEngine 或其他计算平台),你可以这样做,因为主题是类型化的。
如果没有输入主题,您必须在您的流程中实施一个过滤器来完成:"If my type is X then do else exit"。你要为此付费。例如,对于函数和 Cloud 运行,您按请求和处理时间收费,100 毫秒内的最小分解 -> 对于简单的 IF
来说太多了
但是,如果您想在多个主题上插入相同的功能,则必须复制您的功能(除非您使用 HTTP 触发器)
希望对您有所帮助!
用不同类型定义一个主题好还是为每种类型定义类型化主题好?
例如,
[topic]
foo
[message]
{
type: 'x',
data: [1,2,3]
}
或
[topic]
foo-x
[message]
{
data: [1,2,3]
}
根据 pub/sub-pricing,鉴于发送和传递的总消息是相同的,后一种情况似乎更便宜一些,因为消息大小。
但这只是定价,我认为可能有一些经验设计或模式来定义消息。在这种情况下可以考虑什么消息?
这里没有正确或错误的答案。在某种程度上,这取决于订阅者的性质。他们是对所有类型的消息感兴趣还是只对一种类型的消息感兴趣?如果是前者,那么消息中带有该类型的单个主题可能会更好。如果是后者,那么单独订阅可能会更好。另外,你有多少种?对于几十个或更多类型,管理单个主题可能会产生大量开销。
价格可能不是一个因素。如果您的消息很大,那么价格将由消息的内容决定。如果您的消息很小,那么它们将受到每个请求 1KB 的最低计费量的限制。类型成为一个因素的唯一方法是,如果您有非常小的消息,但将它们分批处理,使它们至少为 1KB。
如果您决定对消息中的类型进行编码,请考虑将其放入消息 attributes 而不是消息数据中。这样,您可以查看类型而无需解码整个消息,如果您想立即确认某些类型的消息而不是处理它们,这会很有帮助。
倾向于第二种方案。事实上,如果你想在特定主题上插入处理(功能、云 运行、AppEngine 或其他计算平台),你可以这样做,因为主题是类型化的。
如果没有输入主题,您必须在您的流程中实施一个过滤器来完成:"If my type is X then do else exit"。你要为此付费。例如,对于函数和 Cloud 运行,您按请求和处理时间收费,100 毫秒内的最小分解 -> 对于简单的 IF
来说太多了但是,如果您想在多个主题上插入相同的功能,则必须复制您的功能(除非您使用 HTTP 触发器)
希望对您有所帮助!