前面三章描述了Java通信中的JNDI通過兩個小例子說明怎樣遠程調用對象。這篇文件介紹一下JMS的概念
快速鏈接:
01_Java通信_JNDI_概念
03_Java通信_JNDI_demo2遠程調用weblogic的數據源
正式進入JMS
message queue:消息隊列
MQ一般都做爲企業級IT應用的中間件存在,有很多企業是作爲標準IT基礎結構存在的。在市面上常見的MQ中間件有IBM websphere message queue service,Oracle Advanced Queuing,Microsoft Message Queue(MSMQ),Apache ActiveMQ等,其中apache ActiveMQ是基於apache協議的,和tomcat一樣,你可以在項目中免費使用,MSMQ是Windows的組件,默認是不被安裝的,可以在“添加/刪除組件”中安裝MSMQ(不同版本的Windows對應的MSMQ版本是不同的,XP/2003是3.0,Vista是4.0)。
在Java中,使用主要使用JMS(Java Message Service)來實現MQ,可以選擇的廠商Apache ActiveMQ。
後面將會介紹兩個簡單的小demo。在demo中使用的就是Apache ActiveMQ。
JMS:(Java Message Service,Java消息服務)可以理解爲在兩個應用程序中進行的消息來往。例如:一個大公司中可能兩個項目用了不同的技術:A應用程序是用Java寫的,B應用程序可能用C++寫的。如果A和B需要數據交換,這是就可以使用JMS——異構集成。
應用程序到應用程序(application to application)類型的信息傳遞系統,在用於業務系統中,稱爲企業消息傳遞系統,或者稱爲面向消息的中間件(message oriented Middleware MOM)。
JMS和JDBC類似,Java提供接口,廠商提供實現
JMS優點:
異構集成
緩解系統瓶頸
提高可伸縮性
提高最終用戶生產率
體系結構靈活性和敏捷性
PS:以上是摘自《Java消息服務》
企業消息傳遞:
客戶端:消息傳遞系統由消息傳送客戶端和幾種消息傳送中間件服務器所組成。客戶端向消息傳送服務器發送消息,該服務器隨後再將那些消息分發給其他客戶端。客戶端是使用消息傳送API的一個業務應用程序或者構件,在這裏可以指JMS
JMS消息模型
點對點(1:1)
發佈者(生產者)發佈一條消息,這條消息進入Topic,所有訂閱這個Topic的訂閱者(消費者)都會收到消息的副本
基於發佈/訂閱(1:N)
發佈者(生產者)發送一條消息,消息進入隊列,只會有一個接收者接收這個消息
JMS API
公共API | 點對點API | 發佈/訂閱API |
ConnectionFactory |
QueueConnectionFactory | TopicConnectionFactory |
Destination | Queue | Topic |
Connection | QueueConnection | TopicConnection |
Session | QueueSession | TopicSession |
Message | Message | Message |
MessageProducer | QueueSender | TopicPublisher |
MessageConsumer | QueueReceiver | TopicSubscriber |
下一節實現一個發佈/訂閱消息模型的demo這樣理解起來會更加簡單