Ich versuche, ein Beispiel aus der Esper-Dokumentation für die where
Enumerationsmethode zu erweitern und Probleme zu haben. Hier ist das Beispiel in Frage:Versuch, einen Esper Lambda-Ausdruck zu verwenden
Was ich tun möchte, scheint ziemlich einfach. Statt items
auszuwählen, die diesen Ausdruck entsprechen:
ich
LocationReport
s auswählen möchten, dass mindestens einitem
enthalten, die den Ausdruck übereinstimmt.Tun Sie es über ein time_batch-Fenster (betonter Text nicht-Batch-Zeitfenster ist eine Möglichkeit ebenso).
Also jedes n Anzahl von Sekunden würde ich eine Sammlung von LocationReport
s erhalten, in dem jeder Bericht mindestens eine Nullposition in seine Einzelteile Liste enthält.
Für Referenz, hier ist die Struktur der Java-Objekte in dem Esper Beispiel verwendet:
public class LocationReport {Listenelemente; ...
öffentliche Klasse Item {String assetId; // Passagier oder Gepäckstück ID Ort Ort; // (x, y) Ort boolean Gepäck; // true, wenn es sich bei diesem Artikel um ein Gepäckstück handelt String assetIdPassenger; // if der Artikel ist Gepäck, enthält passagierzugehöriger ...
öffentliche Klasse Standort {int x; int y; ...
Background Detail: Angenommen LocationReport
ist das eigentliche Objekt, das ich interessiert bin ...
EPL Verwendung wie in dem obigen Beispiel der where
Logik funktioniert, aber das Problem ist, dass bei der Rückkehr nur das items
Mitglied, ich sehe nicht die LocationReport
Klasse, die es kam, die neben items
andere Eigenschaften enthält, die meine UpdateListener
braucht.
Auch wahrscheinlich nicht relevant, aber in meinem Fall erhalte ich eine hohe Rate von Nachrichten, wo viele LocationReports Duplikate sind (oder nah genug, um als Duplikate betrachtet zu werden), und meine WHERE-Klausel muss diese Bestimmung treffen und nur "neue" Nachrichten weiterleiten.
Danke!
Sie sollten testbaren Code hinzufügen (der das Problem reproduziert). Erwähnen Sie das erwartete Ergebnis gegen das aktuelle Ergebnis, dann kann Ihnen jemand helfen, es zu beheben. –