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
Java应用程序中的消息传递主体相关推荐
- java向应用程序传递参数_Java应用程序中的消息传递主体
java向应用程序传递参数 消息传递是每个Java应用程序的关键方面,尤其是对于涉及企业应用程序集成(EAI)或关注点分离的应用程序,例如多层WEB应用程序. 消息传递可以分为两个主要类别,即同步和异 ...
- Java web程序中备份oracle数据库
Java web程序中备份oracle数据库 1.生成备份文件: public ActionForward createDmp(ActionMapping mapping, ActionForm fo ...
- 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...
- elastic search java_在 Java 应用程序中使用 Elasticsearch
如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...
- 网络研讨室_免费网络研讨会:Java应用程序中的吞咽异常
网络研讨室 1月30日参加我们的网络研讨会,以发现Java应用程序中的"隐藏"异常. 如果一棵树落在森林中,但是没有写到原木上,它会发出声音吗? 答案是肯定的. 这些类型的错误可能 ...
- lombok 生成代码_使用Project Lombok减少Java应用程序中的样板代码
lombok 生成代码 对Java编程语言最常提出的批评之一是它需要大量的样板代码 . 对于简单的类尤其如此,该类只需要存储一些值就可以. 您需要这些值的getter和setter方法,也许您还需要一 ...
- 免费网络研讨会:Java应用程序中的吞咽异常
1月30日参加我们的网络研讨会,以发现Java应用程序中的"隐藏"异常. 如果一棵树落在森林中,但是没有写到原木上,它会发出声音吗? 答案是肯定的. 这些类型的错误可能会对用户体验 ...
- java程序中用户名和密码_在Java应用程序中使用密码术
java程序中用户名和密码 这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 ...
- 使用Project Lombok减少Java应用程序中的样板代码
对Java编程语言最常提出的批评之一是它需要大量的样板代码 . 对于简单的类尤其如此,该类只需要存储一些值就可以. 您需要这些值的getter和setter,也许您还需要一个构造函数,覆盖equals ...
最新文章
- vue打包路径.html问题,如何解决vue.js打包报错问题
- 菜鸟要做架构师——java性能优化之for循环
- LeetCode 1732. 找到最高海拔
- 信息学奥赛C++语言:输出亲朋字符串
- 【script】python 中文汉字与url的转换
- 一个关于如何创建类似于QQ客户端聊天窗口的模拟小项目
- Web入门之VScode连接数据库sql server(超详细)
- Office365 PPT加载本地模板
- php的一些编码问题
- Presto查询出现error executing query异常
- ViT为何引入cls_token
- 百面机器学习:算法工程师带你去面试
- 安卓使用sqlite
- vue项目每次打开显示的端口号都不一样
- 程序员如何提一个好问题?
- Quartus II工具1——signaltap
- c++编程猜数字游戏
- 孕妇不能吃哪些食物?(协和妇产权威版)
- 电子表格分两级:Excel和WPS是一级,未来5年,75%的人将用二级
- 「游戏」c++ 炸弹人2.0(新增人机)
热门文章
- java mic波形识别_会议季Mic Drop:您不应该错过的13场Java演讲
- java 开发:md5_Java社区调查结果:74%的开发人员希望减少详细程度
- spring javafx_Oracle Spring Clean JavaFX应该吗?
- AWS Lambda事件源映射:使您的触发器混乱无序
- mockito java_使用Mockito在Java中进行模拟入门
- 使用Datastax Java驱动程序与Cassandra进行交互
- Spring休眠教程
- memento模式_Java中的Memento设计模式-示例教程
- java heroku_Neo4j Java Rest绑定入门(Heroku部署)
- 枚举集合的EnumSet