2014-05-23 144 views
1

我遇到了一個問題,我不知道它爲什麼會出現。 我有一個InputAdapter接收隨機生成的事件用於測試目的。StreamInsight:CleanseInput丟棄事件

以下代碼創建一個查詢,其中會丟失大量事件。我實際上想要保留它。

var atgs = new AdvanceTimeGenerationSettings(config.Input.EventCount, 
        TimeSpan.FromSeconds(config.Input.Delay), true); 
       var ats = new AdvanceTimeSettings(atgs, null, AdvanceTimePolicy.Adjust); 

       var dstream = CepStream<Dataclass>.Create("Data Input Stream", typeof (InAdapterFactory), 
        config.Input, EventShape.Point, ats); 



       Query output = dstream.ToQuery(myApplication, 
        "Sample unbounded query", 
        "Query with no output adapter", 
        EventShape.Point, 
        StreamEventOrder.FullyOrdered); 
       output.Start(); 

       var instream = output.ToStream<Dataclass>(); 

有沒有人有一個想法,爲什麼DataInputStream和DatainputStream_CleanseInput所有事件的五分之一之間打通通過呢?看到下面的圖片。有沒有辦法避免這種情況?

https://dl.dropboxusercontent.com/u/15482726/CleanseIssue.jpg

我任何幫助非常感謝。

最好的問候, 喬

回答

1

這些都將是下跌的事件,由於CTI違法行爲。當您將AdvanceTimePolicy設置爲Adjust時,這僅適用於跨越相關CTI跨度的間隔事件。也就是說,如果間隔事件在最後發佈的CTI之前具有開始時間並且在最後發佈的CTI之後具有結束時間,則將調整間隔事件的開始時間(僅)。積分事件是總是下降。

+0

你知不知道爲什麼這些事件違反了CTI?我怎樣才能避免這種情況? – ProggerJoe

+0

沒有看到你的輸入適配器,我不能說。這完全取決於你如何設置事件的開始時間。如果您記錄事件,您實際上會看到哪些事件由於違反CTI而被丟棄。它們將出現在Input運算符中,但在「獲取」InputAdapter_Cleanse之前就會丟失。調試器還會爲您提供關於有多少事件被丟棄的統計信息。 – DevBiker

+0

我解決了這個問題,我在一個單獨的線程中啓動了Inpud適配器,該線程負責混合輸出。無論如何,感謝您的幫助。 – ProggerJoe