国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JMS機制

Hegel_Gu / 2183人閱讀

摘要:多個發布者將消息發送到系統將這些消息傳遞給多個訂閱者。發送消息目的地目的地指明消息被發送的目的地以及客戶端接收消息的來源。消息生產者消息生產者由創建,用于往目的地發送消息。

簡介:

JMS(JAVA Message Service,java消息服務)API是一個消息服務的標準或者說是規范,允許應用程序組件基于JavaEE平臺創建、發送、接收和讀取消息。它使分布式通信耦合度更低,消息服務更加可靠以及異步性。

基本概念:

JMS是java的消息服務,JMS的客戶端之間可以通過JMS服務進行異步的消息傳輸。JMS保證消息只會遞送一次。大家都遇到過重復創建消息問題,而JMS能幫你避免該問題。

消息模型:

Point-to-Point(P2P)
Publish/Subscribe(Pub/Sub)
即點對點和發布訂閱模型

P2P模式

每個消息都被發送到一個特定的隊列,接收者從隊列中獲取消息。隊列保留著消息,直到他們被消費或超時。
特點是:
1.每個消息只有一個消費者(Consumer)(即一旦被消費,消息就不再在消息隊列中)。
2.發送者和接收者之間在時間上沒有依賴性,也就是說當發送者發送了消息之后,不管接收者有沒有正在運行,它不會影響到消息被發送到隊列。
3.接收者在成功接收消息之后需向隊列應答成功。

Pub/Sub模式

客戶端將消息發送到主題。多個發布者將消息發送到Topic,系統將這些消息傳遞給多個訂閱者。
特點是:
1.每個消息可以有多個消費者。
2.發布者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之后,才能消費發布者的消息,而且為了消費消息,訂閱者必須保持運行的狀態。
3.為了緩和這樣嚴格的時間相關性,JMS允許訂閱者創建一個可持久化的訂閱。這樣,即使訂閱者沒有被激活(運行),它也能接收到發布者的消息。

消息的消費 

在JMS中,消息的產生和消費是異步的。對于消費來說,JMS的消息者可以通過兩種方式來消費消息。
同步:接收者調用receive方法來接收消息,receive方法在能夠接收到消息之前(或超時之前)將一直阻塞
異步:接收者可以注冊為一個消息監聽器。當消息到達之后,系統自動調用監聽器的onMessage方法。

JMS編程接口

1.管理對象(Administered objects)-連接工廠(Connection Factories)和目的地(Destination)
2.連接對象(Connections)
3.會話(Sessions)
4.消息生產者(Message Producers)
5.消息消費者(Message Consumers)
6.消息監聽者(Message Listeners)

JMS管理對象

管理對象(Administered objects)是預先配置的JMS對象,由系統管理員為使用JMS的客戶端創建,主要有兩個被管理的對象:
連接工廠(ConnectionFactory),目的地(Destination)。
這兩個管理對象由JMS系統管理員通過使用Application Server管理控制臺創建,存儲在應用程序服務器的JNDI名字空間或JNDI注冊表。

連接工廠(ConnectionFactory)

客戶端使用一個連接工廠對象連接到JMS服務提供者,它創建了JMS服務提供者和客戶端之間的連接。JMS客戶端(如發送者或接受者)會在JNDI名字空間中搜索并獲取該連接。使用該連接,客戶端能夠與目的地通訊,往隊列或話題發送/接收消息。
發送消息:

QueueConnectionFactory queueConnFactory = (QueueConnectionFactory) initialCtx.lookup ("primaryQCF");
Queue purchaseQueue = (Queue) initialCtx.lookup ("Purchase_Queue");
Queue returnQueue = (Queue) initialCtx.lookup ("Return_Queue");
目的地(Destination)

目的地指明消息被發送的目的地以及客戶端接收消息的來源。
創建一個隊列Session:

QueueSession ses = con.createQueueSession (false, Session.AUTO_ACKNOWLEDGE);  //get the Queue object  
Queue t = (Queue) ctx.lookup ("myQueue");  //create QueueReceiver  
QueueReceiver receiver = ses.createReceiver(t); 

創建一個話題Session:

TopicSession ses = con.createTopicSession (false, Session.AUTO_ACKNOWLEDGE); // get the Topic object  
Topic t = (Topic) ctx.lookup ("myTopic");    
TopicSubscriber receiver = ses.createSubscriber(t);
JMS連接

連接對象封裝了與JMS提供者之間的虛擬連接,如果我們有一個ConnectionFactory對象,可以使用它來創建一個連接。

Connection connection = connectionFactory.createConnection();
JMS 會話(Session)

Session是一個單線程上下文,用于生產和消費消息,可以創建出消息生產者和消息消費者。
Session對象實現了Session接口,在創建完連接后,我們可以使用它創建Session。

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
JMS消息生產者

消息生產者由Session創建,用于往目的地發送消息。生產者實現MessageProducer接口,我們可以為目的地、隊列或話題創建生產者;

MessageProducer producer = session.createProducer(dest);
MessageProducer producer = session.createProducer(queue);
MessageProducer producer = session.createProducer(topic);

創建完消息生產者后,可以使用send方法發送消息:

producer.send(message);
JMS消息消費者

消息消費者由Session創建,用于接受目的地發送的消息。消費者實現MessageConsumer接口,,我們可以為目的地、隊列或話題創建消費者;

MessageConsumer consumer = session.createConsumer(dest);
MessageConsumer consumer = session.createConsumer(queue);
MessageConsumer consumer = session.createConsumer(topic);
JMS消息監聽器

JMS消息監聽器是消息的默認事件處理者,他實現了MessageListener接口,該接口包含一個onMessage方法,在該方法中需要定義消息達到后的具體動作。通過調用setMessageListener方法我們給指定消費者定義了消息監聽器。

Listener myListener = new Listener();
consumer.setMessageListener(myListener);

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66485.html

相關文章

  • Java 遠程通訊技術及原理分析

    摘要:對于與而言,則可以看做是消息傳遞技術的一種衍生或封裝。在生產者通知消費者時,傳遞的往往是消息或事件,而非生產者自身。通過消息路由,我們可以配置路由規則指定消息傳遞的路徑,以及指定具體的消費者消費對應的生產者。采用和來進行遠程對象的通訊。 消息模式 歸根結底,企業應用系統就是對數據的處理,而對于一個擁有多個子系統的企業應用系統而言,它的基礎支撐無疑就是對消息的處理。與對象不同,消息本質上...

    rozbo 評論0 收藏0
  • 分布式服務框架之遠程通訊技術及原理分析

    摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現這一模式。 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基...

    sorra 評論0 收藏0
  • 分布式服務框架之遠程通訊技術及原理分析

    摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現這一模式。 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基...

    0xE7A38A 評論0 收藏0
  • 慕課網_《Java消息中間件》學習總結

    摘要:時間年月日星期六說明本文部分內容均來自慕課網。這個時候,可以啟動多臺積分系統,來同時消費這個消息中間件里面的登錄消息,達到橫向擴展的作用。 時間:2017年07月22日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程安排 Java...

    twohappy 評論0 收藏0
  • 基于JMS(Java Message Service)的消息中間件----ActiveMQ

    摘要:而中的消息中間件則是在常見的消息中間件類型無疑是不錯的選擇。是在之間傳遞的消息的對象。基本功能是用于和面向消息的中間件相互通信的應用程序接口。支持兩種消息發送和接收模型。一種稱為模型,即采用點對點的方式發送消息。 消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,并基于數據通信來進行分布式系統的集成。通過提供消息傳遞和消息排隊模型,它可以在分布式環境下擴展進程間的通信。而Ja...

    JessYanCoding 評論0 收藏0

發表評論

0條評論

Hegel_Gu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<