I am doing some prototyping with the event processing framework Esper
(http://esper.codehaus.org/) and I'm running up against my ignorance
of clojure/java interop. I would like to create a java bean in clojure
that is visible to the Esper runtime; I found some sample Java code
that I clojurized as follows:
(ns cepdemo.core
(:import [com.espertech.esper.client
Configuration UpdateListener
EPServiceProviderManager EPRuntime]))
(defrecord Tick [symbol price timestamp])
(defn generate-random-tick [runtime]
(let [price (rand-int 10)
timestamp (java.util.Date.)
symbol "AAPL"
tick (Tick. symbol price timestamp)]
(print "Sending tick: " tick)
(.sendEvent runtime tick)))
(defn cep-listener []
(proxy [UpdateListener] []
(update [new-data old-data]
(print "event received: " new-data))))
(defn config []
(let [cep-config (Configuration.)]
(.addEventType cep-config "StockTick" (.getName Tick))
(let [cep-sp (EPServiceProviderManager/getProvider "myCEPEngine"
cep-config)
cep-rt (.getEPRuntime cep-sp)
cep-admin (.getEPAdministrator cep-sp)
cep-statement
(.createEPL cep-admin
"select * from
StockTick(symbol='AAPL').win:length(2) having avg(price) > 6.0")]
(.addListener cep-statement cep-listener)
(doseq [i (range 10)]
(generate-random-tick cep-rt)))))
The error I get is:
Property named 'symbol' is not valid in any stream [select * from
StockTick(symbol='AAPL').win:length(2) having avg(price) > 6.0]
from which I conclude that defrecord may not be the way to create a
java bean. Do I need to use gen-class?
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en