訊息中介軟體通用化封裝
前期在專案中將AMQ封裝好了以後,為使用者提供了便捷的服務。但是Kafka這塊遲遲沒有動手整合到介面中,主要還是因為Kafka的傳送和接收均和AMQ大相徑庭。業界主流的訊息中介軟體,主要用的就是JMS, AMQP和類Kafka(可Kafka自稱是類AMQP)。相差都很大。
這個月下定決心再次嘗試封裝,但是還是做不到對使用者完全透明,目前的程式碼實現到這樣的程度:
// 建立連線MQClientFactory cf = new MQClientFactory("mq.properties"); MQClient client = cf.createClient(); client.start()
// 傳送AMQMessageMap<String, Object> property = new HashMap<String,Object>(); property.put("property","this is a property");// 透過不同的AMQMessage的建構函式,支援text,obj,byte[]等訊息型別AMQMessage msg = new AMQMessage("this is a test",property); client.send(destination,msg);
// 傳送KafkaMessage,支援string和byte[]KafkaMessage msg = new KafkaMessage(key,value); client.send(destination,msg, new Callback(){...});
// 消費訊息while (true) { MQMessage msg = client.receive(destination,1000); if (msg!=null) { if (msg instanceof AMQMessage) { } else if (msg instanceof KafkaMessage) { } } }
可以看到,對使用者暴露出的是AMQMessage和KafkaMessage類,其實在我一開始的概念中,最好是可以將AMQ和KAFKA都對外遮蔽了的。
然後我意識到不管怎麼封裝,使用者接入的時候其實都會知道自己用的是什麼產品。封裝一層以後,的確是減少了學習的成本,但是也降低了一些效能,是不是有點得不償失呢?
不管怎樣,既然已經封裝到這個程度,先用用看吧。
作者:MisterCH
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/755/viewspace-2819142/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 訊息中介軟體
- 中介軟體之訊息中介軟體-pulsar
- 訊息中介軟體rabbitMQMQ
- 訊息中介軟體—RocketMQ訊息傳送MQ
- 訊息中介軟體選型
- 訊息中介軟體之ActiveMQMQ
- 分散式訊息中介軟體分散式
- 訊息中介軟體Notify和MetaQ-阿里中介軟體阿里
- PHP 訊息中介軟體 工具庫PHP
- 解析訊息中介軟體之RabbitMQMQ
- 訊息中介軟體 — RocketMQ簡介MQ
- 訊息中介軟體 — 使用場景
- 輕量訊息中介軟體ZeroMQMQ
- 常見訊息中介軟體之ActiveMQMQ
- 常見訊息中介軟體之RocketMQMQ
- 深入訊息中介軟體選型分析
- 訊息中介軟體與JMS標準
- 訊息中介軟體—RocketMQ訊息消費(三)(訊息消費重試)MQ
- 從通訊開始聊聊訊息中介軟體
- [分散式][訊息中介軟體]訊息中介軟體如何實現每秒幾十萬的高併發寫入分散式
- 訊息型中介軟體之RabbitMQ叢集MQ
- 訊息中介軟體—Kafka 的設計思想Kafka
- MQ系列:訊息中介軟體執行原理MQ
- 訊息中介軟體的應用場景
- 訊息中介軟體(RabbitMq、Kafka)分析比較MQKafka
- 訊息中介軟體及其測試要點
- 淘寶分散式訊息中介軟體Metaq 1.4.3分散式
- 淺談訊息佇列及常見的訊息中介軟體佇列
- 訊息中介軟體—RocketMQ的RPC通訊(一)MQRPC
- Koa日誌中介軟體封裝開發封裝
- Kafka、RabbitMQ、RocketMQ訊息中介軟體的對比 —— 訊息傳送效能KafkaMQ
- 訊息型中介軟體之RabbitMQ基礎使用MQ
- .net core Redis訊息佇列中介軟體【InitQ】Redis佇列
- nsqlookupd:高效能訊息中介軟體 NSQ 解析SQL
- 深入理解阿里分散式訊息中介軟體阿里分散式
- 訊息中介軟體-kafka學習筆記一Kafka筆記
- 快速入門大資料訊息中介軟體大資料
- 聊聊訊息中介軟體(1),AMQP那些事兒MQ