JMS入門(三)點對點消息傳送模型示例

一、點對點模型

當你只需要將消息發送給唯一的一個消費者時,就應該使用點對點模型,並且這是個高可靠的模型。
我們用一個貸款示例來演示這種模型


QBorrower 類將貸款申請發送給 RequestQueue 隊列,並且使用 ReplyQueue 隊列從 QLender 類中接收結果
QLender  要根據  QBorrower  提供的工資和貸款額來確定是否給予貸款,若貸款額低於200000,則最多可貸款4倍於工資的金額,若貸款額大於200000,則最多可貸款10/3 倍工資的貸款額:

MapMessage msg = (MapMessage) message;
   double salary = msg.getDouble("Salary");
   double loanAmt = msg.getDouble("LoanAmount");
   // 決定是否接收或拒絕貸款申請
   if (loanAmt < 200000) {
    accepted = (salary / loanAmt) > .25;
   } else {
    accepted = (salary / loanAmt) > .33;
   }

二、模型示例

我已經準備好了示例和編譯、運行腳本,你只需要啓動 ActiveMQ,然後依次運行 compile.bat,runQBorrower.bat 和 runQLender.bat 即可
啓動後結果如下:

下面我們在 QBorrower 中輸入工資和貸款額:


看到 QLender 接受了第一次申請,拒絕了第二次申請

三、使用多個接收者實現負載均衡

即使有多個消費者在隊列中偵聽同一消息,也只有一個消費者線程會接收到消息,JMS提供者會使用負載均衡在消費者中均勻發佈消息,再運行一次

runQLender.bat 來添加一個偵聽者,可以看到 JMS提供者通過負載均衡來分發消息:



點對點模型示例



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章