RabbitMQ

Ubuntu 18.04 安装相关软件

拟墨画扇 提交于 2020-08-14 15:32:11
以下是小编平时工作用的相关软件 这是小编百度网盘里一些软件安装包,可以自行获取: https://pan.baidu.com/s/1K_5azApDNmPmSyHH3_LwcA 提取码: hv9x Ubuntu 18.04 安装相关软件 首先更换国内源! 安装chrome浏览器 安装搜狗输入法 安装微信 安装jdk1.8 安装IDEA 安装Mysql 安装Workbench 安装Redis 安装RabbitMq 安装Postman 安装Maven 安装截图工具 安装Git 安装vscode 首先更换国内源! 保险起见,可以先做好备份 1.修改 sources.list 文件 sudo vim / etc / apt / sources . list 将原有的数据注释掉,换上国内镜像 阿里云源 deb http : / / mirrors . aliyun . com / ubuntu / bionic main restricted universe multiverse deb http : / / mirrors . aliyun . com / ubuntu / bionic - security main restricted universe multiverse deb http : / / mirrors . aliyun . com / ubuntu /

饿了么交易系统 5 年演化史

喜夏-厌秋 提交于 2020-08-14 13:31:28
Photo @ Bluehouse Skis 文 | 挽晴 个人简介: 2014年12月加入饿了么,当时参与后台系统的研发(Walis+Javis=>Walle),主要面向客服和BD。 2015年5月开始接触订单系统的研发,7月负责订单研发组;度过单体应用到服务化这个阶段。 2016年初搭建订单的测试团队,订单拆分为正逆向后,主要负责正向和交付部分。 2017年做了一些平台搭建的探索。 2018年初负责整个订单正逆向和交付,年中将下单、购物车部分一起归并,年底和商户订单部分整合,形成交易中台。 2019年10月从交易中台转出,近期做了一小段时间的组织效能和架构。 我为什么会写这篇文章,究其缘由: 一是自己在交易域做了 4 年,有很多只有我才知道,才能串起来的故事,想把这些记录并保留下来。 二是发现后边的很多同学看交易体系时,一接触就是分布式、SOA、每日百万、千万数据量,只知道它是这个样子,很难理解背后的思考和缘由。伴随自己这几年的经验,想让大家能够更容易的理解这个演化过程的原因和历程,有甘有苦。 三是很多总结也好,方法论也好,更多是去除了“糟粕”呈现在大家面前,这里可能会稍微加一点“毒鸡汤”,现实不一定那么美好,我们有很多抉择,现在回过头来看,也许是庆幸,也许是错误。 这篇文章希望通过一些发展的故事和思考来给读者呈现整个历程,大家可以看到非常多野蛮生长的痕迹

封装php的RabbitMq

℡╲_俬逩灬. 提交于 2020-08-14 13:00:54
简单封装了一个rabbitmq类(业务代码随便写的) 首先是账号密码配置 config.php <?php return $arr = [ 'RabbitMq' => [ // Rabbitmq 服务地址 'host' => '127.0.0.1', // Rabbitmq 服务端口 'port' => '5672', // Rabbitmq 帐号 'login' => 'guest', // Rabbitmq 密码 'password' => 'guest', 'vhost'=>'/' ] ]; 基类 base.php <?php include dirname(__FILE__).'/object.php'; include dirname(__FILE__).'/config.php'; class RabbitMq implements object { //保存类实例的静态成员变量 static private $_instance; static private $_conn; static private $amp ; static private $route = 'key_1'; static private $q ; static private $ex ; static private $queue; public static function

Java面试宝典PDF电子版百度云资源免费下载

走远了吗. 提交于 2020-08-14 12:46:53
博主的Java技术交流群里面很多群友在最近面试完之后,都将面试题发到了群里一起讨论,并且都将答案讨论出来了 ,但是面试题都比较零散,所以博主将大家和博主自己搜集的面试题统一整理了下,并且全部归类了20多个分类,历时半个多月终于整理的也差不多1000多题。 博主已经将这些面试题整理成了一个Java面试宝典PDF版的 ,pdf下载量已经达到2w以上了。( 文末附百度云链接 ) 好了,废话不多说,本手册目前为第一版,内容有以下目录: JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 String面试题 Spring Boot面试题 Spring Cloud面试题 RabbitMQ面试题 Dubbo 面试题 MyBatis 面试题 ZooKeeper 面试题 数据结构面试题 算法面试题 Elasticsearch 面试题 Kafka 面试题 微服务 面试题 Linux面试题 PDF部分截图: 好了,由于太多,暂时列举部分截图,还有很多无法一一截图。 Java面试宝典PDF版下载地址: 百度云链接: https://pan.baidu.com/s/1vQL1d3

Spring Boot整合RabbitMQ

冷暖自知 提交于 2020-08-14 12:44:58
Spring Boot整合RabbitMQ 目录 Spring Boot整合RabbitMQ 写在开头 整合流程 配置文件 RabbitMQ配置 RabbitMQ生产者 RabbitMQ消费者 手动应答简单工具类 参考文档 写在开头 最近在搭一套基于SpringBoot的项目,用到了ssm+mysql+rabbitmq+redis。除了rabbitmq之外,其他几个都很快整合好了,唯独rabbitmq找了不少资料,才最终整合好,达到了预期。特此将过程记录下来,供参考。 整合流程 整合流程中的代码都为整合的关键配置及其使用。至于SpringBoot的基本配置,请参考 Spring Boot Quick Start 。 配置文件 pom.xml <!-- rabbit-mq --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> application.yml spring: rabbitmq: host: localhost port: 5672 username: guest password: guest virtual-host: / listener: simple:

RabbitMQ:消息发送确认 与 消息接收确认(ACK)

倾然丶 夕夏残阳落幕 提交于 2020-08-14 11:49:07
默认情况下如果一个 Message 被消费者所正确接收则会被从 Queue 中移除 如果一个 Queue 没被任何消费者订阅,那么这个 Queue 中的消息会被 Cache(缓存),当有消费者订阅时则会立即发送,当 Message 被消费者正确接收时,就会被从 Queue 中移除 消息发送确认 发送的消息怎么样才算失败或成功?如何确认? 当消息无法路由到队列时,确认消息路由失败。消息成功路由时,当需要发送的队列都发送成功后,进行确认消息,对于持久化队列意味着写入磁盘,对于镜像队列意味着所有镜像接收成功 消息接收确认 消息消费者如何通知 Rabbit 消息消费成功? 消息 通过 ACK 确认是否被正确接收 ,每个 Message 都要被确认(acknowledged),可以手动去 ACK 或自动 ACK 自动确认会在消息发送给消费者后立即确认,但存在丢失消息的可能,如果消费端消费逻辑抛出异常,也就是消费端没有处理成功这条消息,那么就相当于丢失了消息 如果消息已经被处理,但后续代码抛出异常,使用 Spring 进行管理的话消费端业务逻辑会进行回滚,这也同样造成了实际意义的消息丢失 如果手动确认则当消费者调用 ack、nack、reject 几种方法进行确认,手动确认可以在业务失败后进行一些操作,如果消息未被 ACK 则会发送到下一个消费者 如果某个服务忘记 ACK 了,则

rabbitmq生产者消息确认机制

青春壹個敷衍的年華 提交于 2020-08-14 11:25:46
rabbitmq生产者消息确认机制 问题描述 当生产者发送消息给rabbitmq服务器时,消息是否真正的到达了服务器?为了保证生产者发送的消息能够可靠的发送到服务器(即消息落地),rabbitmq提供了两种方式: 通过事务实现 通过发送方确认机制( publisher confirm )实现 事务机制 rabbitmq与事务相关的方法: channel.txSelect() : 将当前信道设置成事务模式 channel.txCommit() : 用于提交事务 channel.txRollback() : 用于回滚事务 通过事务实现机制,只有消息成功被rabbitmq服务器接收,事务才能提交成功,否则便可在捕获异常之后进行回滚,然后进行消息重发,但是事务非常影响rabbitmq的性能。还有就是事务机制是阻塞的过程,只有等待服务器回应之后才会处理下一条消息 示例: public class TransactionSender { private static final String ex_name = "ex_tx" ; private static final String q_name = "q_tx" ; private static final String rt_name = "rt_tx" ; public static void main ( String [ ]

RocketMQ 的核心 NameServer

做~自己de王妃 提交于 2020-08-14 10:19:13
点击蓝色“ 程序员大帝 ”关注我哟 加个“ 星标 ”,及时阅读最新技术文章 每日鸡汤,好喝 前言 本文属于《从零开始消息中间件》的系列文章,接着上篇文章 《 不要和陌生人说话,消息中间件之 Topic 》,今天来介绍一下 RocketMQ 的核心组件 NameServer。 这个东西很重要,它要管理集群里所有 Broker 的信息,让使用 MQ 的上下游系统可以通过它感知到集群的情况。 开始消息中间件学习的时候,最好有一个切入点,从而搞清楚它的架构设计细节,然后就可以申请一些机器开始落地部署了。 而 NameServer 非常适合我们入手, 因为没有 NameServer 一切都无从谈起,可以说这是 RocketMQ 运行的起点。 正文 01 什么是 NameServer? NameServer 也称之为路由中心,它的角色主要是为了感知集群里所有的节点与组件,然后配合生产者和消费者,使其能够和 MQ 系统进行通信。 针对目前流行的三种消息中间件 Kafka、 RabbitMQ 和 RocketMQ ,它们对路由中心的实现均有所不同。 Kafka 的路由中心实现相对复杂、混乱,它由 ZooKeeper 以及某个作为 Controller 的 Broker 共同完成的。 RabbitMQ 的 话 是 集 群 每个节点同时也会扮演了路由中心的角色。 而 RocketMQ

.NET 开源工作流: Slickflow流程引擎高级开发(七)--消息队列(RabbitMQ)的集成使用

你。 提交于 2020-08-14 04:46:23
前言: 工作流流程过程中,除了正常的人工审批类型的节点外,事件类型的节点处理也尤为重要。比如比较常见的事件类型的节点有:Timer/Message/Signal等。本文重点阐述消息类型的节点处理,以及实现消息驱动流程过程中对消息队列(RabbitMQ)的集成使用方式。 1. 节点间消息传递 1.1 MessageThrow 消息抛出节点,当执行到这个节点时,特定消息主题的消息记录将会添加到消息队列,然后等待被订阅的消息消费者来激活消息处理服务。 1.2 MessageCatch 消息接收节点,消息接收节点上定义了消息主题,并且在消息队列中订阅了该主题。当有特定主题的消息被发布时候,消息消费者会捕获到消息主题,同时消息处理服务中,将会定位到流程的该节点位置,然后通过流程服务来判定下一步的流转流转。 1.3 单一流程内的节点消息传递 该流程只进行消息的发布或者接收,而消息的另外一方则可能是业务系统。两者之间的关联是靠消息主题来识别。如下图所示: 1.4 跨流程间的节点消息传递 通常可以用泳道流程来表示跨流程间的消息通知。泳道流程中,有多个流程,其中一个是泳道主流程,其它的则为泳道附属流程。将会在下面的章节中具体描述。 2. 跨流程消息传递 2.1 泳道流程 泳道流程中,使用多个泳道来区分不同的流程,流程之间可以通过消息来传递信息,如下图所示: 2.2 消息节点类型

涨姿势了解一下Kafka消费位移可好?

十年热恋 提交于 2020-08-14 00:24:30
摘要:Kafka中的位移是个极其重要的概念,因为数据一致性、准确性是一个很重要的语义,我们都不希望消息重复消费或者丢失。而位移就是控制消费进度的大佬。本文就详细聊聊kafka消费位移的那些事,包括: 概念剖析 kafka的两种位移 关于位移(Offset),其实在kafka的世界里有两种位移: 分区位移:生产者向分区写入消息,每条消息在分区中的位置信息由一个叫offset的数据来表征。假设一个生产者向一个空分区写入了 10 条消息,那么这 10 条消息的位移依次是 0、1、…、9; 消费位移:消费者需要记录消费进度,即消费到了哪个分区的哪个位置上,这是消费者位移(Consumer Offset)。 注意,这和上面所说的消息在分区上的位移完全不是一个概念。上面的“位移”表征的是分区内的消息位置,它是不变的,即一旦消息被成功写入到一个分区上,它的位移值就是固定的了。而消费者位移则不同,它可能是随时变化的,毕竟它是消费者消费进度的指示器。 消费位移 消费位移,记录的是 Consumer 要消费的下一条消息的位移, 切记,是下一条消息的位移! 而不是目前最新消费消息的位移 假设一个分区中有 10 条消息,位移分别是 0 到 9。某个 Consumer 应用已消费了 5 条消息,这就说明该 Consumer 消费了位移为 0 到 4 的 5 条消息,此时 Consumer 的位移是 5