1
串行解串我在這裏http://patternhatch.com/2013/06/12/messaging-using-clojure-and-zeromq/代碼從Clojure的
follwing的例子我已驗證我可以序列MarketData並建成的protobuf它。除了使用chesire系列化
我決定試試我新學到的protobuf序列化的知識。當我修改該示例中的功能集成到他們的GPB版本,當我運行
(future-call market-data-publisher-gpb)
它似乎確定。但是,當我運行客戶端
(get-market-data-gpb 100)
沒有任何反應。我有兩個問題:
1)是否有某種形式的Clojure的圖形或其他調試器? 2)如果有人可以指出我正確的方向,我在我的修改過的例子中做錯了什麼,這也會有所幫助。
我似乎記得在ZMQ用[protobuf的]二進制數據有效載荷需要一組不同的電話嗎?
(ns clj-zmq.core
(:import [org.jeromq ZMQ])
)
(use 'flatland.protobuf.core)
(import com.example.Example$MarketData)
(def MarketData (protodef Example$MarketData))
(def ctx (ZMQ/context 1))
(defn market-data-publisher-gpb
[]
(let [s (.socket ctx ZMQ/PUB)
market-data-event (fn []
{:symbol (rand-nth ["CAT" "UTX"])
:size (rand-int 1000)
:price (format "%.2f" (rand 50.0))})]
(.bind s "tcp://127.0.0.1:6666")
(while :true
(.send s (protobuf-dump(market-data-event))))))
; Client
(defn get-market-data-gpb
[num-events]
(let [s (.socket ctx ZMQ/SUB)]
(.subscribe s "")
(.connect s "tcp://127.0.0.1:6666")
(dotimes [_ num-events]
(println (protobuf-load MarketData (.recv s))))
(.close s)))
謝謝我會研究這些。我確實有這個錯誤,我糾正它(並修改了上面的帖子來反映它),該程序仍然只是坐在那裏,什麼都不做。 – user1676605
仍然不確定爲什麼這段代碼不起作用。我將如何獲得protobuf-dump創建的消息大小(以字節爲單位),然後預先確定以字節爲單位的大小? – user1676605
我開始相信jeromq不足以處理二進制消息。 – user1676605