将kafka主题合并为一个父子/子/子主题

时间:2018-09-10 18:55:38

标签: apache-kafka parent-child

这里是这种情况:我有几个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"}]}

从表面上看,这似乎是一个非常简单的问题和常见用例,但是在卡夫卡式世界中是否有最佳实践来做这种事情?

0 个答案:

没有答案