这里是这种情况:我有几个kafka主题,其中包含与子级相对应的消息,另一个主题是与父级相对应的消息。它们通常都将在彼此之间瞬间完成,但是我不能保证。目标是采用这些主题,并或多或少实时地产生一个新的流,将父母和孩子粘合在一起。当然,孩子的存在和数量事先是未知的,这使得很难知道我们是否已经掌握了一切。我不熟悉Kstreamsm,但这似乎是一个不错的选择,但是如果一个新孩子迟到了怎么办?
想象一下,父主题是transactionHeader,并且消息看起来像这样:
{headerID: 1234, storeID: 100, txnDate: "2018-09-10"}
然后是诸如此类的子主题: 详细信息:
{headerID: 1234, detaiID: 1234567, productID: 7777, txnAmount: 9.99}
{headerID: 1234, detaiID: 1234568, productID: 8888, txnAmount: 7.99}
{headerID: 1234, detaiID: 1234569, productID: 9999, txnAmount: 5.49}
投标:
{headerID: 1234, tenderID: 34567, tenderType: "AMEX"}
{headerID: 1234, tenderID: 34568, tenderType: "Gift Card"}
所需的结果与此类似:
{headerID: 1234 storeID: 100, txnDate: "2018-09-10",
details: [{detaiID: 1234567, productID: 7777, txnAmount: 9.99},
{detaiID: 1234568, productID: 8888, txnAmount: 7.99},
detaiID: 1234569, productID: 9999, txnAmount: 5.49}]
tenders: [{tenderID: 34567, tenderType: "AMEX"},
tenderID: 34568, tenderType: "Gift Card"}]}
从表面上看,这似乎是一个非常简单的问题和常见用例,但是在卡夫卡式世界中是否有最佳实践来做这种事情?