Java應用程序中的消息傳遞主體

消息傳遞是每個Java應用程序的關鍵方面,尤其是對于涉及企業應用程序集成(EAI)或關注點分離的應用程序,例如多層WEB應用程序。

消息傳遞可以分為兩個主要類別,即同步和異步。 另一方面,使用同步消息傳遞時,對話的發起者等待重播每個提交的請求,而在異步消息傳遞中,發起者對重播不感興趣。 Java進程以同步方式進行通信的最常見,最有效的方法是通過遠程方法調用(RMI)。 異步通信主要使用Java Messaging Service(JMS)實現。

這篇文章提出了一種設計模式,涉及低延遲和高吞吐量應用程序的Java進程之間的異步通信。

如上所述,JMS被認為是異步應用程序消息傳遞的“事實”標準。 但是,由于涉及消息交換生命周期的內部檢查和過程(即使對于內存代理),JMS也會導致延遲顯著增加。 我們處理異步消息傳遞以實現低延遲和高吞吐量的首選方法是:

  • 如果持久性是強制性的,那么最好的方法是使用JMS持久性隊列或主題
  • 如果持久性不是強制性的,那么您應該實現異步消息傳遞,如下所示:
    • 消息容器應該是一個List(最好是ArrayList實現)或Map(最好是HashMap實現)
    • 發件人進程應使用同步塊執行同步訪問,以將消息插入容器
    • 實現一個接收器進程池,該池使用同步塊同步訪問消息容器并收回消息
    • 消息可以以多種方式實現,我們的首選方法是實現Externalizable接口的Plain Old Java Object(POJO),以便手動處理序列化過程。

翻譯自: https://www.javacodegeeks.com/2010/05/messaging-principals-in-java.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374600.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

站立會議05(第二次沖刺)

一、站立會議信息(配站立會議照片) 第五天我們繼續開發,把注冊驗證信息完善一下,將開始網站公共主頁的開發。 二、任務進度 第五天我們注冊驗證完成。 三、任務看板(圖) 四、燃盡圖(圖&#xff…

[SoapUI] DataSource, DataSourceLoop, DataSink

Script assertion in login: 轉載于:https://www.cnblogs.com/MasterMonkInTemple/p/4748189.html

1154. 一年中的第幾天

給你一個字符串 date ,按 YYYY-MM-DD 格式表示一個 現行公元紀年法 日期。請你計算并返回該日期是當年的第幾天。 通常情況下,我們認為 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此類推。每個月的天數與現行公元紀年…

將CAPTCHA添加到您的GWT應用程序

什么是驗證碼? 在一個充滿惡意機器人的世界中,您該怎么做才能保護您寶貴的Web應用程序? 您真正應該做的基本事情之一就是向其中添加CAPTCHA功能。 如果您不熟悉(聽起來有些奇怪),則CAPTCHA是確保用戶實際上…

SQL基礎語句

數據庫面試常見題 一、SQL語言包括數據定義語言、數據操作語言、數據控制語言和事務控制語言1:DDL(Data Definition Language),是用于描述數據庫中要存儲的現實世界實體的語言。 CREATE TABLE - 創建新表 ALTER TABLE - 變更(改變&#xff0…

YYModel Summary

YYModel Effect-> YYModel的作用Provide some data-model method—>提供一些數據模型的方法Convert json to any object, or convert any object to json.->對任何對象轉換成JSON,和對任何JSON轉換為對象Set object properties with a key-value dictionar…

iOS學習——ScrollView圖片輪播和同類控件優先級問題

iOS學習——ScrollView的使用和同類控件優先級問題 1. 布置界面 ScrollView的使用非常簡單,只有三步 1.1 添加一個scrollview 1.2 向scrollview添加內容 1.3 告訴scrollview中內容的實際大小 首先做第一步,布置界面。 拖拽一個scrollview就可以了 就…

Exchanger和無GC的Java

總覽 Exchanger類在線程之間傳遞工作和回收使用的對象方面非常有效。 AFAIK,它也是最少使用的并發類之一。 但是,如果您不需要GC,則使用ArrayBlockingQueue進行日志記錄會更簡單。 交換器類 Exchanger類對于在兩個線程之間來回傳遞數據很有…

構造函數的反射

1 import java.lang.reflect.Constructor;2 3 public class zzbds {4 public static void main(String[] args) {5 6 try{ 7 Class cStudent.class; //獲得無參構造函數8 Constructor constructorc.getConstructor(new Class[]{…

字符串連接“+”int、char、string

String s1 "21" "8" "54";System.out.println(s1);String s2 "21" 8 "54";System.out.println(s2);String s3 "21" 8 "54";System.out.println(s3);21854 21854 21854

使用Spring使用Java發送電子郵件– GMail SMTP服務器示例

對于使用Java發送電子郵件, JavaMail API是標準解決方案。 如官方網頁所述,“ JavaMail API提供了獨立于平臺和協議的框架來構建郵件和消息傳遞應用程序”。 必需的類包含在JavaEE平臺中,但是要在獨立的JavaSE應用程序中使用它,您…

Java字符與數字的計算

先看例子: char ch;int x;int y 7;System.out.print("7的ASCII碼值是:");System.out.println(y);ch 7 2;System.out.print("7 2的char型:");System.out.println(ch);x 7 2;System.out.print("7 2的int型&…

wordcount

源代碼如下 package org.apache.hadoop.examples; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io…

EJB 3.1全局JNDI訪問

如本系列前面的部分所述,EJB 3.0版規范的主要缺點是缺少可移植的全局JNDI名稱。 這意味著沒有可移植的方式將EJB引用鏈接到應用程序外部的Bean。 EJB v。3.1規范用自己的話填補了這一定義: “一個標準化的全局JNDI名稱空間和一系列相關的名稱空間&#…

Git 分支管理和沖突解決

創建分支 git branch 沒有參數,顯示本地版本庫中所有的本地分支名稱。 當前檢出分支的前面會有星號。 git branch newname 在當前檢出分支上新建分支,名叫newname。 git checkout newname 檢出分支,即切換到名叫newname的分支。 git checkout…

力扣打開轉盤鎖

打開轉盤鎖 評論區大神代碼&#xff1a; public int openLock(String[] deadends, String target) {Set<String> set new HashSet<>(Arrays.asList(deadends));//開始遍歷的字符串是"0000"&#xff0c;相當于根節點String startStr "0000";i…

EJB程序化查找

在上一篇文章中&#xff0c;我們了解了EJB 引用和EJB 注入 。 盡管EJB注入是一種強大的容器工具&#xff0c;可以簡化模塊化應用程序的開發&#xff0c;但有時還是需要執行程序化EJB查找。 讓我們假設&#xff0c;例如&#xff0c;一組不同的EJB實現了由公共業務接口定義的公共…

git克隆/更新/提交代碼步驟及示意圖

1. git clone ssh://flycm.intel.com/scm/at/atSrc 或者git clone ssh://flycm.intel.com/scm/at/atJar 或者git clone ssh://flycm.intel.com/scm/at/atFramework 2. git checkout cpeg/scm/stable 切換分支&#xff0c;然后更新代碼 3. git pull 先把遠程分支上最新的代碼拉到…

C++面試寶典

1.new、delete、malloc、free關系 delete會調用對象的析構函數,和new對應free只會釋放內存&#xff0c;new調用構造函數。malloc與free是C/C語言的標準庫函數&#xff0c;new/delete是C的運算符。它們都可用于申請動態內存和釋放內存。對于非內部數據類型的對象而言&#xff0c…

Google App Engine:在您自己的域中托管應用程序

在Google App Engine中創建新應用程序時&#xff0c;您將獲得一個域名“ yourapp.appspot.com”。 但是&#xff0c;誰會想要以這樣的后綴托管他們的應用程序&#xff08;除非您喜歡它&#xff01;&#xff09;&#xff1f; 為了改善您的應用品牌&#xff0c;最好的辦法是將您的…