Active MQ C++實現通訊記錄


Active MQ  C++實現通訊

 

背景知識:

ActiveMQ是一個易於使用的消息中間件。

消息中間件

我們簡單的介紹一下消息中間件,對它有一個基本認識就好,消息中間件(MOM:Message Orient middleware)。

消息中間件有很多的用途和優點: 
1. 將數據從一個應用程序傳送到另一個應用程序,或者從軟件的一個模塊傳送到另外一個模塊; 
2. 負責建立網絡通信的通道,進行數據的可靠傳送。 
3. 保證數據不重發,不丟失 
4. 能夠實現跨平台操作,能夠為不同操作系統上的軟件集成技工數據傳送服務

MQ

首先簡單的介紹一下MQ,MQ英文名MessageQueue,中文名也就是大家用的消息隊列,干嘛用的呢,說白了就是一個消息的接受和轉發的容器,可用於消息推送。

下面進入我們今天的主題,為大家介紹ActiveMQ:

ActiveMQ

簡要概述ActiveMQ

Apache ActiveMQ ™ is the most popular and powerful open source messaging and Integration Patterns server.
Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. 

ActiveMQ是由Apache出品的,一款最流行的,能力強勁的開源消息總線。ActiveMQ是一個完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現,它非常快速,支持多種語言的客戶端和協議,而且可以非常容易的嵌入到企業的應用環境中,並有許多高級功能。

什么情況下使用ActiveMQ?

  1. 多個項目之間集成 
    (1) 跨平台 
    (2) 多語言 
    (3) 多項目
  2. 降低系統間模塊的耦合度,解耦 
    (1) 軟件擴展性
  3. 系統前后端隔離 
    (1) 前后端隔離,屏蔽高安全區
  4. 多種語言和協議編寫客戶端。語言: Java, C, C++, C#, Ruby, Perl, Python, PHP。應用協議: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
  5. 完全支持JMS1.1和J2EE 1.4規范 (持久化,XA消息,事務)
  6. 對Spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統里面去,而且也支持Spring2.0的特性
  7. 通過了常見J2EE服務器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業服務器上
  8. 支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
  9. 支持通過JDBC和journal提供高速的消息持久化
  10. 從設計上保證了高性能的集群,客戶端-服務器,點對點
  11. 支持Ajax
  12. 支持與Axis的整合
  13. 可以很容易得調用內嵌JMS provider,進行測試

ActiveMQ特性列表

ActiveMQ默認使用的TCP連接端口是61616

應用場景:

消息隊列在大型電子商務類網站,如京東、淘寶、去哪兒等網站有這深入的應用,隊列的主要作用是消除高並發訪問高峰,加快網站的響應速度。在不使用消息隊列的情況下,用戶的請求數據直接寫入數據庫,在高並發的情況下,會對數據庫造成巨大的壓力,同時也使得系統響應延遲加劇。在使用隊列后,用戶的請求發給隊列后立即返回(當然不能直接給用戶提示訂單提交成功,京東上提示:您“您提交了訂單,請等待系統確認”),再由消息隊列的消費者進程從消息隊列中獲取數據,異步寫入數據庫。由於消息隊列的服務處理速度遠快於數據庫,因此用戶的響應延遲可得到有效改善。


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

操作步驟

1.下載版本

ActiveMQ-cpp-2.2.6

apr-1.6.2

apr-iconv-1.2.1

apr-util-1.6.0

2.路徑為D:\GCN\MQClient\Activemq-cpp\tags

去掉依賴庫的版本號

apr-util  ,apr-1.6.2 ,apr-iconv

 

3.打開D:\GCN\MQClient\Activemq-cpp\tags\activemq-cpp-2.2.6\vs2005-build

編譯依賴關系為apr-util    -》  apr-iconv    -》  apr

  1. 注意事項

編譯到libaprutil的時候,Debug依賴於expat.lib, release依賴於xml.lib.

 

 

Debug:

E:\GCN\20170831SVN_MAIN\trunk\Product\MQClient\apr-util\xml\expat\lib

 

Release:

 

  1. 編譯vs2005-activemq

    設置好依賴,附加庫頭文件,附加庫lib路徑。

  1. 編譯vs2005-activemq-example

 

 

 

 

配置文件:

Vs2005-activemq-cpp.exe

activemq.cfg

 

##### 全局配置參數######

host_id=35

node_id=3236

cmdline = 1

Consumer  = 1(生產者和消費者切換)

 

#配置重啟

#reset_time = 0,20:00:00

reset_time = 06:15:00

sync_time = 0

sync_interval = 60

accept_sync_time = 0

 

#MQ配置

mq_url       = tcp://10.1.6.2:61616

mq_user      = jlt_mq

mq_pwd       = jlt_mq123

mq_topic     = jlt.srv.quote.engine.pubQuote.topic.queueName

#mq_topic    = QUOTATION.WJF.TEST

#讀共享隊列

mem_que_name = QUEUE_MQ_SERVER

other_inst_multi = 1000

forex_inst_multi = 10000

 

#寫共享隊列

XQUE_NUM = 2

XQUE1.XQUE_NAME = MQ_QUOTATION3

XQUE1.WAIT_PERMIT = 10000

XQUE1.BUFFER_PERMIT = 10000

XQUE1.MAIN = 1

XQUE1.MODE = 1

 

XQUE2.XQUE_NAME = MQ_QUOTATION4

XQUE2.XQUE_TIMEOUT = 1000

XQUE2.WAIT_PERMIT = 10000

XQUE2.BUFFER_PERMIT = 10000

XQUE2.MAIN = 1

XQUE2.MODE = 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM