设备将向Azure Eventhub发送多条消息(尚未决定)。 每条消息都有不同的格式和内容(虽然需要不同的处理)。 每条消息都将包含一个唯一的ServiceID,用于标识消息的类型。
我们现在有两种情况如何处理它。
A) 1. Spout将收到消息并将其传递给ParserBolt 2. ParserBolt将读取ServiceID并根据ID将其传递给另一个螺栓
在这种情况下,每个msg(基于ServiceID)将通过拓扑中的不同路径。所有消息都可以由一个拓扑处理。
b)中 1.多个拓扑 - 针对每个ServiceID。 2. Spout将收到消息并将其传递给Bolt 3. Bolt将读取ServiceID - 如果正确的serviceID将其传递给下一个bolt,如果不正确serviceID将解除此作业
由于Storm保证每个msg至少处理一次 - 每个msg将在某个时刻到达正确的拓扑。但这些拓扑结构会消除很多不适合他们的消息。
答案 0 :(得分:0)
如果你不能在Storm之外拆分你的输入流,你肯定应该使用单一拓扑。这将节省大量网络流量和不必要的数据复制。