exchange

rabbitmq 实现延迟队列的两种方式

孤街醉人 提交于 2019-12-23 17:36:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ps: 文章里面延迟队列=延时队列 什么是延迟队列 延迟队列存储的对象肯定是对应的延时消息,所谓”延时消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。 场景一:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将进行一场处理。这是就可以使用延时队列将订单信息发送到延时队列。 场景二:用户希望通过手机远程遥控家里的智能设备在指定的时间进行工作。这时候就可以将用户指令发送到延时队列,当指令设定的时间到了再将指令推送到只能设备。 RabbitMQ如何实现迟队列 方法一 AMQP协议和RabbitMQ队列本身没有直接支持延迟队列功能,但是可以通过以下特性模拟出延迟队列的功能。 但是我们可以通过RabbitMQ的两个特性来曲线实现延迟队列: 特性1、 Time To Live(TTL) RabbitMQ可以针对Queue设置x-expires 或者 针对Message设置 x-message-ttl,来控制消息的生存时间,如果超时(两者同时设置以最先到期的时间为准),则消息变为dead letter(死信) RabbitMQ针对队列中的消息过期时间有两种方法可以设置。 A: 通过队列属性设置

RabbitMQ交换机

孤街浪徒 提交于 2019-12-23 01:09:37
RabbitMQ交换机 交换机属性: Name:交换机名称 Type:交换机类型 direct、topic、fanout、headers Durability:是否需要持久化,true为持久化 Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange Internal:当前Exchange是否用于RabbitMQ内部使用,默认为False Arguments:扩展参数,用于扩展AMQP协议,定制化使用 直流交换机 直连交换机Direct Exchange(完全匹配路由key) 所有发送到Direct Exchange的消息会被转发到RouteKey中指定的Queue 注意:Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何绑定(binding)操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃; 消费端代码 package com . xieminglu . rabbitmqapi . exchange . direct ; import com . rabbitmq . client . Channel ; import com . rabbitmq . client . Connection ; import com .

RabbitMQ之集成springcloud项目

纵饮孤独 提交于 2019-12-23 01:07:33
RabbitMQ整合 SpringCloud实战 注意一点,在发送消息的时候对template进行配置mandatory=true保证监听有效 生产端还可以配置其他属性,比如发送重试,超时时间、次数、间隔等 消费端核心配置 首先配置手工确认模式,用于ACK的手工处理,这样我们可以保证消息的可靠性送达,或者在消费端消费失败的时候可以做到重回队列、根据业务记录日志等处理 可以设置消费端的监听个数和最大个数,用于控制消费端的并发情况 @RabbitListener注解的使用 消费端监听@RabbitListener注解,这个对于在实际工作中非常的好用 @RabbitListener是一个组合注解,里面可以注解配置(@QueueBinding、@Queue、@Exchange)直接通过这个组合注解一次性搞定消费端交换机、队列、绑定、路由、并且配置监听功能等 注: 由于类配置写在代码里非常不友好,所以强烈建议大家使用配置文件配置 springcloud项目 创建rabbitmq-common(公共模块) pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>

Spring boot + RabbitMq

倾然丶 夕夏残阳落幕 提交于 2019-12-22 17:53:17
消息发送者 导入依赖 < parent > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - parent < / artifactId > < version > 2.0 .1 . RELEASE < / version > < / parent > < dependencies > < dependency > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - amqp < / artifactId > < / dependency > < dependency > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - test < / artifactId > < / dependency > < / dependencies > 配置文件 spring : application : name : test‐rabbitmq‐producer rabbitmq

Exchange 2016部署实施案例篇-04.Ex基础配置篇(上)

元气小坏坏 提交于 2019-12-21 23:53:11
  我们在上一篇中完成了Exchange Server 2016 CU8的安装 《Exchange 2016部署实施案例篇-03.Exchange部署篇(下)》 ,接下来我们将进入配置相关内容,一开始的计划是将配置分为上、下2个盘符写配置,但在实际配置过程中发现截图是在有点多,所以只好将配置再次分为上、中、下3个篇幅写配置,还请谅解。 DNS配置(DNS轮询) 部署过Exchange Server的朋友可能知道,部署完成Exchange后,只能使用IP或者LocalHost方式访问,除非您在您的DNS里添加A记录,但看过活动目录部署篇《Exchange 2016部署实施案例篇-02.活动目录部署篇》的朋友可能知道,我们部署的域的域名是ITSoul.inter,那么我们如何使用Mail.Itsoul.cn访问那? 那么我们首先就要在域的DNS里创建一个ITSoul.cn的DNS域,(如果您有业务系统也在使用ITSoul.cn域访问,并且走的都是公网的话,要把所有记录在内网DNS里创建一份)步骤如下 打开域的DNS,在正向查找区域右键选择"新建区域"如图所示: 点击完成后会弹出如下界面,并点击“下一步” 点击"下一步"后,会弹出如下界面,参照截图,选择"主要区域"并点击"下一步" 根据需求选择这个DNS作用域是同步到这个域还是林 输入您要创建的DNS作用域的名称,我们要使用Mail

Amazon邮件服务 WorkMail

瘦欲@ 提交于 2019-12-21 22:07:14
前面折腾Chime时注册好了域名就想着顺便弄个自己域名的邮箱玩玩,同时也看一下一直困扰着兄弟公司同事的邮箱配置问题到底根上啥原因。一直以为他们用的是Simple Email Services,结果配好之后才发现用错了场景,这货是群发广告或者做外发的智能主机,对收件和普通用户并不友好而且没有会议室资源这个场景。 WorkMail才是简单版的exchange,目前全球只有三个region可用,找一个欧洲的Ireland来用。和Chime差不多,先添加DNS纪录等同步。 这里吐槽一下竟然不能像SES那样一键把纪录更新到Route53去,还要一条条的加,神烦。 剩下的界面就很简单,Users和exchange的概述一样,Resurces也是类似会议室和会议室设备之类的。比较纠结的是WorkMail有自己单独的directory服务,不清楚为啥没有像Chime一样使用一个独立的,然后所有service共享,后期应该会去考虑对接三方认证,不然就成孤岛了。 客户配置的Guide让选Exchange,也不知道是不是后台直接用了Exchange还是用了Exchange的AutoDiscovery一样协议。实际配置发现MAC自带的App很简单,输完邮箱地址、用户名和密码就完事了,MAC上的Outlook就比较坑怎么配都不对,Windows上的Exchange用户名注意格式就是了。

RabbitMQ入门

北战南征 提交于 2019-12-21 11:43:17
RabbitMQ 简介 各大主流中间件对比 ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线,并且它一 个完全支持 J M S 规范的消息中间件。 其丰富的 API 、多种集群构建模式使得他成为业界老牌消息中间件,在中 小型企业中应用广泛! MQ 衡量指标:服务性能、数据存储、集群架构 Kafka RocketMQ 是阿里开源的消息中间件,目前也已经孵化为 Apache 顶级项目, 它是纯 java 开发,具有高吞吐量、高可用性、适合大规模分布式系统 应用的特点。 RocketMQ 思路起源于 Kafka, 它对消息的可靠传输及事务 性做了优化, 目前在阿里集团被广泛应用于交易、充值、流计算、消息推 送、日志流式处理、 binglog 分发等场景 RabbitMQ 是使用 Erlang 语言开发的开源消息队列系统,基于 AMQP 协议 来实现。 AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布 / 订阅)、可靠性、安全。 AMQP 协议更多用在企业系统内, 对数据 _ 致 性、稳定性和可靠性要求很髙的场景,对性能和吞吐量的要求还在其次。 初识 RabbitMQ RabbitMQ是—个开源的消息代理和队列服务器,用来通过普通协议 在完全不同的应用之间共享数据, RabbitMQ 是使用 Erlang 语言来编写 的,并且 RabbitMQ 是基于

Office 365 排错:Exchange Online Active Sync异常排错方法

邮差的信 提交于 2019-12-21 00:28:11
https://blog.51cto.com/13969817 如果企业进行数字化转型,采用Office 365 作为企业内部办公、协作和文件管理平台的情况下,当多个用户报告Outlook出现问题时,作为Office 365 IT admin,我们需要如何识别、排除故障来解决问题呢? 最常见的原因可能是他们的Office 365资源链接中断或者失败,为了帮助诊断这个问题,你可以使用Remote Connectivity Analyzer 来帮助你解决Exchange Active Sync 或Office 365 等产品的连接问题,也可以直接访问网站: https://testconnectivity.microsoft.com/ 来诊断: Exchange ActiveSync连接 Exchange Web服务连接 Microsoft Office 365 连接 Internet Outlook问题 根据诊断结果提供相应的解决方案,现在我们来以“Office 365中的Outlook连接为例” 点击“下一步”输入相应凭证信息之后,点击验证。 执行测试完成之后,可以查看测试结果。 从图中可见,虽然连接测试是成功的,但是仍有一些警告,可以看到这些是因为DNS导致的,所以我们接下来可以进一步验证一下Office 365的DNS就可以了 没有任何错误。说明Outlook连接正常

RabbitMQ的几种应用场景

落花浮王杯 提交于 2019-12-19 21:04:43
RabbitMQ主页:https://www.rabbitmq.com/ AMQP AMQP协议是一个高级抽象层消息通信协议, RabbitMQ是 AMQP协议的实现。它主要包括以下组件: 1.Server(broker): 接受客户端连接,实现 AMQP消息队列和路由功能的进程。 2.Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个Exchange和Queue,但是权限控制的最小粒度是Virtual Host 3.Exchange:接受生产者发送的消息,并根据Binding规则将消息路由给服务器中的队列。ExchangeType决定了Exchange路由消息的行为,例如,在RabbitMQ中,ExchangeType有direct、Fanout和Topic三种,不同类型的Exchange路由的行为是不一样的。 4. Message Queue:消息队列,用于存储还未被消费者消费的消息。 5.Message: 由Header和Body组成,Header是由生产者添加的各种属性的集合,包括Message是否被持久化、由哪个Message Queue接受、优先级是多少等。而Body是真正需要传输的APP数据。 6. Binding:Binding联系了 Exchange与 Message Queue。 Exchange在与多个

图解RabbitMQ

百般思念 提交于 2019-12-19 13:00:02
花点时间重新把rabbitMQ的整体流程粗略的梳理了一遍,便于理解。总体来说,消息产生者->queue->消息消费者可以图解如下: 文字解说:消息产生者 producter 和 consumer 通过 TCP 连接到 rabbitmq server 进行消息的发生和接收,且消息数据的传递都是在 Channel 中进行。每一个 message 经产生后发送给交换器 exchange 时,会带一个路由键 Routing key,用于与 Binding Key 配合,标记这是属于哪个 queue 的消息。exchange 并不会对消息进行存储,而是起到一个枢纽的作用,通过 Binding Key 指定当前的 Exchange 下什么样的 Routing Key 对应到什么样的 queue ,即消息应该属于哪个 queue 。消费者 consumer 从 queue 中获取消息,针对同一个 queue 可以有多个不同的消费者,但是此时 queue 中的消息会被平均分摊给这些消费者进行处理,而不是每个消费者都接收这个 queue 的全部消息。 注意:message传递到queue时,主要是Routing Key和Binding Key在起桥梁作用,需要这二者进行匹配才能正常的传递,所以目前存在三种匹配类型(exchange types):完全匹配(Direct)、模式匹配(Topic)