python消息中间件activemq_消息中间件ActiveMQ和JMS基础
MQ主要流程
解耦,异步,消峰
其中目的地主要为队列或者主题
队列点对点
消息的生产者
或者
这时消息的生产者名字已经出来
并且入队的数量变成了3
上述完成的也就是这部分
消息的消费者
前四步大同小异
这里需要和消息发送者的类型一致,所以需要强转一下
其中等待接收可以设置为一直等或者设置时长
最后再加上判断,良好的编程习惯
执行一下
出队变成了3,消费连接数变成了1,并且因为设置的receive为一直等,所以消费数量不会变化,除非关闭程序
不过这种方法是阻塞的
=====================
=====================
2通过监听的方式来消费消息(像是安卓中的监听事件)
前5步不变,从while处改变
加上System.in.read是让程序持续运行,不输入即一直运行,输入了然后就关闭,正好给消费时间
不然不写这部分,程序运行速度肯定超过消费速度
===============================
===============================
搞清楚了生产者消费者的基础程序和概念之后下面看一个重点
消费生产的冲突问题---三大消费问题
=================================
=================================
=================================
主题发布订阅-一对多
与队列基本一致,改一改名字和目的地即可
生产者
消费者同理也是如此操作即可
最后再说下MQ中间件的产品很多:kafka,RocketMQ,而学习了activeMQ基本原理相通,
JMS
而MQ基本属于JMS规范( JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。)
而jms常见的问题就是保障消息可靠性保证,
1持久非持久2事务3签收
这就是涉及到消息头中的DeliveryMode
消息头
1JMSDestination 目的地
2JMSDeliveryMode 持久非持久模式
3JMSExpiration 过期时间
4 JMSPriority 优先级
5JMSMessageID 唯一识别编号
消息调用的幂等性就需要这个唯一识别编号
当然最后看了上面的一个一个设置消息头是不是很麻烦,上面只是为了演示方法,还可以通过send统一批处理
消息体
消息属性-更进一步增加识别度
怎样用:
JMS可靠性
1持久设置
这也是前面消息头讲过的
2事务设置(偏生产者)
生产者事务
前面我们都是用的false下面如设置为true看看
为什么false这么方便,自动提交还需要false呢
因为事务的特性:同生共死
所以再写代码时应该是这样用,假设一个生产者挂了,这一事务(加入有十个生产者)就因为都不能执行,这时应让事务回滚重新执行
即:正常给你提交,错误就再给你机会回滚直到生产成功
看看下面伪代码
3签收设置(偏消费者)
前面的情况是非事务,如果按照事务的情况,你设置手动的情况不ACK都不影响了
如一样可以接受
Broker
Broker可以被看成消息转发器。Broker也负责一些控制和管理操作。它能够定位服务端的位置,若发生异常,能够将异常捕获传给Client。Broker需要提供注册服务的接口给Server。如果请求来自其他的Broker,本地的Broker需要转发请求并最终将结果或异常回应给相应的远程Broker。Broker提供的服务和name service非常相像(如DNS、LDAP)。
l 责任:1. 注册服务。2. 提供服务API。3. 转发消息。4. 容错处理。5. 与其他Broker的交互。6。 定位服务。
导入依赖
然后写Broker
相当于ActiveMQ的一个mini版实例
就可以不再调用136而是本机
python消息中间件activemq_消息中间件ActiveMQ和JMS基础相关推荐
- jms activemq_带有ActiveMQ的JMS
jms activemq 带有ActiveMQ的JMS JMS是Java消息服务的缩写,它提供了一种以松散耦合,灵活的方式集成应用程序的机制. JMS以存储和转发的方式跨应用程序异步传递数据. 应用程 ...
- 速读“消息中间件”架构体系-ActiveMQ:入门+原理分析+优缺点!
ActiveMQ 01 介绍 ActiveMQ 是完全基于 JMS 规范实现的一个消息中间件产品. 是 Apache 开源基金会研发的消息中间件.ActiveMQ主要应用在分布式系统架构中,帮助构建高 ...
- 使用Apache ActiveMQ的JMS开发基础
去年是我尝试JMS的时候. 背后的想法和概念让我有些困惑,但是当我知道它的用途后,我很快就掌握了它. 在本文中,我将展示使用Apache ActiveMQ作为后端使用Java开发简单的生产者/消费者的 ...
- 【ActiveMQ】JMS中间件ActiveMQ详解
1.JMS介绍 Java Message Service(JMS)是SUN提出的旨在统一各种MOM(Message-Oriented Middleware )系统接口的规范,它包含点对点(Point ...
- java消息中间件_java消息中间件
消息队列 什么是消息队列 消息队列是消息中间件的一种实现方式. 什么是消息中间件? 将消息中间件需要理解一下什么是消息和中间件? 消息 消息是指软件对象之间进行交互作用和通讯利用的一种方式. 中间件 ...
- c语言和python哪个自学好-有c语言基础 自学python 应该选什么书来看?
然后,目前你还处在新手村阶段.还是先关注下入门资料.Python 新手入门课_Python - 实验楼www.shiyanlou.com 这是实验楼为 Python 零基础的同学定制的课程,仅需要一 ...
- python自学步骤-学习Python最正确的步骤(0基础必备)
首先,学习Python编程技术,自学或者参加培训学习都适用,每个人都有自己的学习方式和方法. 一:明确自己的学习目标. 不管我们学习什么样的知识,都要对自己的学习目标有一个明确的认识.只有这样才能朝着 ...
- python从零基础到项目实战怎么样-Python 3.x网络爬虫从零基础到项目实战
● 案例完整 本书中的所有案例都是通过"理论讲解 + 环境搭建 + 完整代码及分析 + 运行结果"这种完善的结构进行讲解的.此外,复杂的案例配有项目结构图,有难度的案例还分析了底层 ...
- Python语言学习:python语言的特点、入门、基础用法之详细攻略
Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...
最新文章
- 我想成为一名计算机管理员英语作文,我想成为一名老师英语作文4篇
- 模拟和存根有什么区别?
- 【代码笔记】Web-JavaScript-JavaScript表单验证
- Python之数据分析(动画效果、animation模块、气泡动画)
- 大数据时代的河南机遇
- 从信号转换角度研究血压(波形)预测的相关论文
- 定时开关机cmd命令
- 国务院通过大数据发展行动纲要
- oracle财务系统表,EBS系统财务常用表和各表关联关系
- HDU - 3533 Escape
- oracle优化器analyzed,Oracle Optimizer:迁移到使用基于成本的优化器—–系列1.2-数据库专栏,ORACLE...
- DropBox系列-安卓DropBox介绍
- 从平民到帝皇——给企业主的启示
- 矩阵的转置与矩阵的逆
- wlh- beagle bone 通过uboot tftp 加载zImage 设备树 及 nfs 挂载根文件系统
- java全角数字_JAVA技巧(JAVA全角和半角的转换代码)
- 微信如何关闭城市服务定位服务器,位置定位微信(怎么悄悄的查对方位置)
- linux上配置zabbix并设置企业微信,机器人以及自主告警
- 计算机科学格鲁吉亚理工,乔治亚理工大学计算机科学专业大学排名
- html转盘游戏,使用Javascript和CSS3实现一个转盘小游戏(实战篇)