1. 程式人生 > >同步方式的訊息傳送和非同步方式的訊息傳送

同步方式的訊息傳送和非同步方式的訊息傳送

通訊有兩類不同的基本方式: 具有依時性的同步方式以及與時間無關的非同步方式。訊息傳送中介軟體有許多不同型別, 它們分別都能夠支援一類基本方式的訊息通訊, 有時可以支援兩類方式。

根據定義, 同步執行的特徵為: 在兩個通訊應用系統之間必須要進行同步, 兩個系統必須都在正常執行, 並且會中斷客戶端的執行流, 轉而執行呼叫。傳送程式和接收程式都必須一直做好相互通訊的準備。傳送程式首先向接收程式發起一個請求(傳送訊息)。傳送程式緊接著就會堵塞它自身的程序, 直到收到接收程式的響應。傳送程式在收到響應後會繼續向下進行處理。同步方式的請求/響應通訊如圖2.6所示。在2.4節中, 將討論同步通訊的一個具體例項——遠端過程呼叫。

  

當使用非同步訊息傳送時, 呼叫者在傳送訊息以後可以不用等待響應, 可以接著處理其他任務。對於非同步通訊, 一個應用程式(請求者或傳送者)將請求傳送給另一個應用程式, 然後可以繼續向下執行它自身的其他任務。傳送程式無須等待接收程式的執行和返回結果, 而是可以繼續處理其他請求。與同步方式不同, 非同步方式中兩個應用系統(傳送程式和接收程式)無須同時都在執行, 也無須同時都在處理通訊任務。

通常使用排隊機制來實現非同步訊息傳送。有兩種不同型別的排隊方式: 儲存/轉發、 釋出/訂閱, 在2.5節中將討論這兩類排隊方式。

在選擇通訊方式的型別時, 必須仔細斟酌鬆耦合介面和緊耦合介面的利弊, 以及非同步互動和同步互動的利弊。在下面的兩節中, 我們將更詳細地討論這些通訊方式。

相關推薦

同步方式訊息傳送非同步方式訊息傳送

通訊有兩類不同的基本方式: 具有依時性的同步方式以及與時間無關的非同步方式。訊息傳送中介軟體有許多不同型別, 它們分別都能夠支援一類基本方式的訊息通訊, 有時可以支援兩類方式。 根據定義, 同步執行的特徵為: 在兩個通訊應用系統之間必須要進行同步, 兩個系統必須都在正

springboot kafka整合(包括java程式碼不能傳送消費kafka訊息的採坑記錄)

kafka採坑記錄:     1、kafka服務端server.properties中的broker.id叢集內需要唯一。     2、kafka config檔案中listeners和advertised.listeners需要配置本機ip:9092

【Java TCP/IP Socket程式設計】----傳送接收資料----訊息成幀與解析

目錄   簡介 成幀與解析 成幀技術案例 簡介 在程式中使用套接字向其他程式提供資訊或者使用其他程式提供的資訊,這就需要任何需要交換資訊的程式間在資訊編碼方式上達成共識(包含了資訊交換的形式和意義),稱為協議,用來實現特定的應用程式的協議叫應用程式協議。大部分應

Java socket模擬傳送接收HTTP訊息

理解:模擬登陸指定網站,登陸成功後,獲取返回串中的cookie值用於發起下次請求。 package demo.http.client; import java.io.IOException; import java.io.InputStream; import java.

百度地圖測載入的兩種 方式 直接載入非同步載入

轉自:http://blog.csdn.net/u014470581/article/details/527808811、直接載入 <html><head>    <metahttp-

activemq傳送同步傳送非同步傳送

在預設大多數情況下,AcitveMQ 是以非同步模式傳送訊息。例外的情況:在沒有使用 事務的情況下,生產者以PERSISTENT 傳送模式傳送訊息。在這種情況下,send 方法都 是同步的,並且一直阻塞直到ActiveMQ 發回確認訊息:訊息已經儲存在永續性

SpringBoot通過kafka實現訊息傳送與接收(包括不能傳送消費kafka訊息的採坑記錄)

kafka採坑記錄:     1、kafka服務端server.properties中的broker.id叢集內需要唯一。     2、kafka config檔案中listeners和advertised.listeners需要配置本機ip:9092地址,不然消費不到資

訊息傳遞非同步任務

安卓中在子線成中更新UI會出現錯誤,為了確保UI顯示的正確性,必須統一管理這些更改指令。怎麼把子執行緒中的指令傳遞到主執行緒UI中,安卓提供了Handler訊息機制。 handler message void handleMessage(Messag

解決Springboot整合ActiveMQ傳送接收topic訊息的問題

環境搭建 1.建立maven專案(jar) 2.pom.xml新增依賴 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo

SpringCloud微服務呼叫方式之RibbonFeign方式

微服務呼叫方式之Ribbon的用法 匯入Ribbon的依賴 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId&

ubuntu 16.04安裝redis的兩種方式(apt編譯方式解除安裝

  保證網路暢通,選定好下載工作路徑,執行以下命令下載redis-3.2.6: sudo wget http://download.redis.io/releases/redis-3.2.6.ta

MFC中傳送自定義訊息機制,PostMessageSendMessage方式

       MFC中有種訊息佇列,使用PostMessage()或者SendMessage()給窗體傳送自定義訊息,當窗體接收到訊息時呼叫該訊息對應繫結的方法。 PostMessage:把訊息投放到執行緒的訊息佇列,不等訊息被處理就立即返回;Send

執行緒同步非同步鎖的幾種方式

同步鎖:當在一個java虛擬機器多個執行緒操作一個變數的時候就會出現執行緒安全問題,這個時候就會用到同步鎖。 同步鎖的解決方式: 先看下一個執行緒異常的售票 public class ThreadSafe { public static void main(String[] arg

嵌入式Linux併發程式設計,程序間通訊方式,System V IPC,訊息佇列,開啟/建立msgget(), 傳送訊息msgsnd(),格式,接收訊息msgrcv(),控制訊息佇列 msgctl()

文章目錄 1,訊息佇列 2,訊息佇列結構 3,訊息佇列使用步驟 3.1,開啟/建立訊息佇列 msgget() 3.1.1,開啟/建立訊息佇列---示例msgget() 3.2,向訊息佇列傳送訊息 msgs

SpringCloud Stream 訊息同步非同步

1.非同步的形式有 通知:單向請求,只管傳送不關心結果。 請求/非同步響應:一對一的互動。請求的資訊不回立馬返回,而是過一段時間再返回結果。 訊息:利用訊息可以實現一對多形態的互動。 2.MQ的應用場景;非同步處理、流量削鋒、日誌處理、應用解耦 3.pom檔案引入架包依賴

程序間通訊的訊息佇列共享記憶體方式的實現

共享記憶體方式使用QSharedMemory 和QSystemSemaphore兩個類實現 一個程序往共享記憶體空間中寫,一個程序往共享記憶體空間中讀 兩程序通訊時: 向共享記憶體中提供資料的一方: 1,定義QSharedMemory shareMemory,並設定標誌名shareMemory.setKey(

MQ傳送普通訊息(三種方式

MQ 傳送普通訊息有三種實現方式:可靠同步傳送、可靠非同步傳送、單向(Oneway)傳送。本文介紹了每種實現的原理、使用場景以及三種實現的異同,同時提供了程式碼示例以供參考。 可靠

Rocket MQ傳送訊息的三種方式初析

前言 MQ 傳送訊息有三種實現方式:可靠同步傳送、可靠非同步傳送、單向(Oneway)傳送。基於版本4.2.0+。注意:順序訊息只支援可靠同步傳送。 可靠同步傳送 原理:同步傳送是指訊息傳送方發出

訊號與槽連線方式同步非同步

事先宣告:此篇部落格非完全原創 一. 同步 synchronous.h #ifndef SYNC_H #define SYNC_H #include <QObject> #include <QDebug> class MyT

訊息機制使用呼叫函式方式有何區別

最關鍵的應用區別是,訊息機制可能解決不同執行緒間的資料轉輸和控制,而不同的執行緒間不能直接呼叫函式。 訊息機制是排隊處理方式,windows存在一個系統佇列,每當一個應用程式或一個執行緒發生一個事件或需要處理事務的時候並不是直接呼叫應用程式中的函式,而是把需求打包,向w