自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 SqlServer 越南语乱码

执行SQLupdate t_mch_merchant set client_name = 'Dự kiến, Học viện Ngân hàng' where id = 90查询结果select client_name from t_mch_merchant where id = 90解决方式:= 等于后面加个Nupdate t_mch_merchant set client_name = N'Dự kiến, Học viện Ngân hàng' where i...

2021-11-25 18:13:45 1941

原创 第16节:RabbitMQ消费者确认-手动确认

应用场景:如果我们只是接收到消息没来得及处理,当应用报错、或者系统奔溃,此时由于消息已经被自动确认,消息就在队列中被删除了,就会丢失消息。手动确认主要并使用以下方法: basicAck(): 用于肯定确认,multiple参数用于多个消息确认。 basicRecover():是路由不成功的消息可以使用recovery重新发送到队列中。 basicReject():是接收端告诉服务器这个消息我拒绝接收,不处理,可以设置是否放回到...

2021-11-20 10:52:47 1330

原创 第15节:RabbitMQ发送方确认-异步监听确认模式

Confirm的三种实现方式:方式三:channel.addConfirmListener()异步监听发送方确认模式channel接口方法: 1.channel.confirmSelect(); 开启发送方确认模式 2.channel.addConfirmListener(); 消息确认以后的回调方法真实案例使用:记得先启动监听参数1 :为被确认的消息编号,从1开始自动递增用于标记当前是第几个消息参数2 :为当前消息是否...

2021-11-20 10:50:57 1271

原创 第14节:RabbitMQ发送方确认-批量确认模式

Confirm的三种实现方式:方式二:channel.waitForConfirmsOrDie()批量确认模式;channel接口方法: 1.channel.confirmSelect(); 开启发送方确认模式 2.channel.waitForConfirms(); 特点: 批量消息确认,它会同时向服务,确认之前当前通道中的发送的数据是否已经全部成功写入此方法无任何返回值。 如果...

2021-11-20 10:49:14 1122

原创 第13节:RabbitMQ发送方确认-普通确认模式

Confirm发送方确认模式使用和事务类似,也是通过设置Channel进行发送方确认的,最终达到确保所有的消息全部发送成功Confirm的三种实现方式:方式一:channel.waitForConfirms()普通发送方确认模式;channel接口方法: 1.channel.confirmSelect(); 开启发送方确认模式 2.channel.waitForConfirms(); 阻塞线程等待服务器返回响应 (wait等待的意思)...

2021-11-20 10:48:19 991

原创 第11节:RabbitMQ 事务消息-发送者

事务消息与数据库的事务类似,只是MQ中的消息是要保证消息是否会全部发送成功,防止丢失消息的一种策略。RabbitMQ有两种方式来解决这个问题:1.通过AMQP提供的事务机制实现;2.使用发送者确认模式实现;两者应用场景: 1.事务功能场景:当需要发送多条消息时,第1条消息发送成功,后面的消息因为逻辑异常等原因发送失败,需要回滚,那么就需要使用到RabbitMQ的事务。 2.事务业务场景:要么全部成功、要么全部失败的场景 3.发送者确认模式业务场...

2021-11-20 10:46:13 2948 1

原创 第10节:RabbitMQ 持久化、排外、自动删除

持久化:durable : true排外:同时最多只允许有一个消费者监听当前队列 , 当一个队列被绑定了交换机,那么此队列在绑定其他交换机,将会抛出异常自动删除:当没有任何消费者监听队列时,这个队列自动删除...

2021-11-20 10:43:12 1639

原创 第9节:RabbitMQ - fanout、topic 区别

共同点: 1.fanout、topic 都是广播模式,都是1对N。不同点: 1.topic 增加了一些匹配规则,更适合不同的功能模块来接收同一个消息,列入商城下单成功后需要发送消息到队列中 例如RoutingKey 为 order.success, 物流系统监听 order.* ,发票系统监听order.* 2.fanout 无需定义 RoutingKey 和 BindingKey,topic 需要定义 RoutingKey 和 Bindi...

2021-11-20 10:39:37 1760

转载 第8节:RabbitMQ 之 headers

headers 模式为:单薄模式,1对1headers 匹配规则:any 、all any: 只要在发布消息时携带的有一对键值对headers满足队列定义的多个参数的其中一个就能匹配上,注意这里是键值对的完全匹配,只匹配到键了,值却不一样是不行的; all:在发布消息时携带的所有Entry必须和绑定在队列上的所有Entry完全匹配缺点:Headers类型的交换器性能会很差 首部交换机和扇形交换机都不需...

2021-11-19 16:20:30 1836

转载 第7节:RabbitMQ 之 topic

topic 模式为:广播模式,1对多topic 匹配规则为:通过 *号、#号 通配符来匹配 topic 交换器通过通配符匹配分配消息的路由键属性,将路由键和通配符进行匹配,此时队列需要绑定到一个通配符。它将路由键和绑定键的字符串切分成单词,这些单词之间用点 . 隔开。有两个通配符:符号“#”和符号“*”。#匹配0个或多个单词,“*”匹配不多不少一个单词。如果 通配符规则是 aa.* , 如果routing key 是 aa.bb则匹配成功,如果是 aa.bb.cc 则...

2021-11-19 16:18:27 1475

原创 第6节:RabbitMQ 之 fanout

fanout 模式为:广播模式,1对多 fanout 匹配规则为:无匹配规则,只要该queue是fanout,那么它就能收到消息优点:fanout 类型转发消息是最快的,没有任何的binding,没有任何的routing key,所以速度快。缺点:丢失消息,因为是广播的,一旦错过,那么就丢失了。就想看新闻联播一样,错过了7点,那么就只能看重播了,但是不会重播。 没有routing key、binding key 的概念,每个发到 fanout 类型交换器的消息都会分...

2021-11-19 16:13:02 1091

原创 第5节:RabbitMQ 之 direct

direct 模式为:单播模式,1对1 direct 匹配规则为:精准匹配。 消息中的路由键(routing key)如果和 Binding 中的 binding key 完全一致, 交换器就将消息发到对应的队列中。 如果一个队列绑定到交换机要求路由键为“dog”,则只转发 routing key 标记为“dog”的消息,不会转发“dog.puppy”,也不会转发“dog.guard”等等。它是完全匹配、单播的模式。...

2021-11-19 16:11:55 497

原创 第4节:RabbitMQ基本概念

ConnectionFactory、Connection、Channel: ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。ConnectionFactory为Connection的制造工厂。Channel是我们与RabbitMQ打交道的最重要的一个接口,我们大部分的业务操作是在Channel这个接口...

2021-11-19 16:10:02 119

原创 第3节:RabbitMQ特点

RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。1.rabbitMQ官网上说的特点是6个 (https://www.rabbitmq.com/)1.1 异步消息 1.2 支持多种开发语言 1.3 支持分布式 1.4 企业和云就绪 1.5 ...

2021-11-19 16:08:39 579

原创 第2节:RabbitMQ应用场景

应用场景(为什么要使用消息队列):1.1异步处理:业务调用不关注返回结果的情况下,立即返回,缩短响应时间。比如:用户下单,我们系统的核心逻辑是下单和减库存,给用户增加积分是非核心逻辑, 那么这个增加积分的逻辑就可以做一步,一般应用于将长链路调用,优化成并行调用多个短链路。这里面有一个概念是一致性,像这类场景不必要求强一致性,只需要保持最终一致性。1.2应用解耦:消费者和生产者解耦,各自只需要关注自身相关的队列即可,无需知道对方的状态。1.3限流和削峰:前端请求优先进入队列...

2021-11-19 16:01:31 403 2

原创 第1节:RabbitMQ简介

简介:1.要学习Rabbitmq,首先要知道什么是消息队列,要知道什么事消息队列,首先要知道什么是消息1.1什么是消息? 消息就是数据,但是不是传统的数据,而是应用之间传输的数据,这个称之为消息。 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ...

2021-11-19 15:56:16 545

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除