JMS--仅仅是一种规范,一种接口规约,一种编程模型。类似的JPA,JSR等

场景:

  1.多个系统之间交互,实现可以采取RPC,但是交互复杂,基本就是点对点的方式

  2.其实交互就是消息,而JMS就是消息规范,支持事务机制(保证安全)--不就是类似于RDBMS吗,存储消息,转存发送

  3.大家想想队列的机制(集合存储----队列存储---消息存储---消息服务器---数据库服务器----分布式存储------分布式文件系统)

  解决办法:

    多个系统采用消息交互,形成CS模型交互(集中式结构),当然还有其他的....

名词:

  Message 消息

  PayLoad 消息负载  

  点对点-----单一消费者(队列)

  主题-------订阅者模型

  异构-------接收转存然后多线程处理,支持失败策略,重试策略,持久化策略

优势:相比WS,RPC由于JMS具有事务机制,类似于数据库机制,安全性更好,所以又专门的MOM中间件比如MQ(个人目前使用中)

策略:

  消息存储,不会丢失,支持水平扩展也就是JMS服务器的集群(DB集群,Server集群,WWW集群)

图示:

  

协议格式:(一下都是基于文本的协议)

  HTTP:

  

  私有的协议:

  

本质:就是格式不一致,HTTP大家公认的,都知道代表什么意思,而私有协议没有阅读协议手册,你根本不知道什么意思

    打个比喻,二战时的电报就是一种协议,没有密码本你根本不知道是啥意思

     加密:格式置换

JMS消息服务模型的更多相关文章

  1. IBM MQ消息中间件jms消息中RHF2消息头的处理

    公司的技术平台在和某券商对接IBM MQ消息中间件时,发送到MQ中的消息多出了消息头信息:RHF2,造成消息的接收处理不正常.在此记录此问题的处理方式. 在IBM MQ中提供了一个参数 targetC ...

  2. Intellij IDEA 创建消息驱动Bean - 接收JMS消息

    除了同步方式的调用之外,有时还需要异步调用,用来处理不需要即时处理的信息,例如短信.邮件等,这需要使用EJB中的独特组件——消息驱动Bean(Message-Driven Bean,MDB),它提供了 ...

  3. JMS开发(三):JMS消息的确认方式

    这里单独列出来我也是觉得有点必要的,毕竟JMS总体知识点并不多,这点可能被很多人所忽视. 首选定义:消息的确认是指消息接受者接到消息,并做出了对应的处理之后,它将回送一个确认消息. 对于非事务性会话, ...

  4. JMS - 消息选择器

    消息选择器 将消息选择器应用在消费者,消费者就只会接受能通过过滤器的消息.消息选择器是基于 SQL-92 条件表达式语法的一个子集.消息选择器由三个元素组成:标识符.常量和标记运算符. 标识符 标识符 ...

  5. JMS消息传输机制

    JMS消息传送模型: 消息传送机制, 是基于拉取(pull)或者轮询(polling)的方式.  JMS具备两种"消息传送模型": P2P和Pub/sub. (1) P2P:点对点 ...

  6. JavaEE(7) - JMS消息事务和异常

    1. 使用事务性Session为消息增加事务(NetBeans创建java project: TxSession) MessageSender.java package lee; import jav ...

  7. JavaEE(6) - JMS消息选择和查看

    1. JMS消息的类型.消息头和消息属性 消息类型: StreamMessage MapMessage TextMessage ObjectMessage BytesMessage JMS消息中的消息 ...

  8. 消息中间件--ActiveMQ&JMS消息服务

    ### 消息中间件 ### ---------- **消息中间件** 1. 消息中间件的概述 2. 消息中间件的应用场景 * 异步处理 * 应用解耦 * 流量削峰 * 消息通信   --------- ...

  9. Oozie 生成JMS消息并向 JMS Provider发送消息过程分析

    一,涉及到的工程 从官网下载源码,mvn 编译成 Eclipse工程文件:

随机推荐

  1. 读写 Excel 工作表

    导入诸如 CSV 之类文本格式的数据的优点是不需要依靠某些特定软件来读取数据,并且文件具有可读性,即软件中性.然而,它的缺点也很明显——我们不能直接对文本编辑器中的数据执行计算操作,因为这些内容是纯文 ...

  2. $state和$rootScope.$on($stateChangeStart)

    这两者的区别:请看博客:http://stackoverflow.com/questions/32680292/angularjs-state-and-rootscope-onstatechanges ...

  3. oracle: sql语句报ora-01461/ora-00911错误

    oracle: sql语句报ora-01461/ora-00911错误 ora-00911:sql语句中可能含有特殊字符,或者sql语句中不能用";"分号结尾. sql语句报ora ...

  4. HDU-4550-贪心

    卡片游戏 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  5. Cache应用/任务Mutex,用于高并发任务处理经过多个项目使用

    <?php /** * Class Cache redis 用于报表的缓存基本存储和读写 2.0 * <pre> * Cache::read("diamond.accoun ...

  6. 在ubuntu16中部署Django使用memcached作为缓存

    Django支持很多缓存系统,如 文件系统缓存. 数据库缓存. 内存缓存(Memcached),其中,Memcached是最快的,没有之一,是绝配.因为所有的缓存数据都放在内存,没有了IO延迟,也没有 ...

  7. c++的c风格字符串函数的实现

    要注意使用断言判断传入的字符串非空. #include <cassert> //求字符串长度 size_t StrLen(const char *str) { assert(str != ...

  8. URL 生成带文字二维码

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...

  9. Oozie_04总结一下workflowf的运行流程【20161116】

    4.1 bin/oozie ..... 提交任务 [hadoop@hadoop01 oozie-4.0.0-cdh5.3.6]$ bin/oozie job -oozie http://hadoop0 ...

  10. .NET CORE微服务实践

    .NET CORE微服务实践 https://www.cnblogs.com/zengqinglei/p/9570343.html .NET CORE 实践部署架构图 实践源码:https://git ...