RabbitMq

JMS—AMOP高级网络

核心概念

Message,消息头(route-key路由键)、消息体、

Publisher,生产者生产消息—传给Exchange-->Broker

Broker 消息代理(broker,queue)

Exchange 交换器,接受消息并路由给服务器队列(Binding),绑定关系—route-key。

Consumer 监听队列

一个客户端只会建立一条连接

一条连接,多个通道

VHost,虚拟主机,将broker隔离开,为虚拟主机,以路径表示,/java,/php

docker run -d —name rabbitmq -p xxx

一堆业务端口

后台管理系统,15672端口 创建相关

exchanges,在管理后台创建exchange、创建queue、绑定queue

交换机类型:根据分发策略不同,分为,

Direct、路由键与队列名完全匹配,点对点,

Fanout、广播,不处理路由键

Topic、主题类广播,匹配一个topic进行广播,将路由键和绑定键的字符串切分,识别通配符,#(匹配0或多个) *(匹配一个),usea.news会发给usa.#,#.news

headers(性能低,基本不用)

Spring整合

spring自动配置@RabbitAutoConfiguration

properties配置spring.rabbitma.host port virtual-host=/

开启功能 @EableRabbit

使用AmqpAdmin创建exchange相关

类DirectExchange、amqp.declereExchange,

类Queue、amqp.declearQueue

类Binding

收发消息

RabbitTemplate

发自定义类的数据,使用configure 配置messageConverter

对应类/方法监听消息@RabbitListener(queue={“name”})(监听那些队列)

必须有@EnableRabbit

方法上@RabbitHandler(重载不同消息)

Queue,可以有多个监听,但是只能被消费一次

接受消息,当前消息处理完,后接受下个消息

可靠投递、消息确认机制

Publisher->broker confirm Callback 抵达服务器

publisher(exchange->queue) returnCallback 抵达队列

consumer(queue->consumer) ack 抵达消费者

配置机制

spring.rabbitma.publisher-confirms=true

spring.rabbitma.publisher-returns=true

spring.rabbitma.template.mandatory=true //异步返回 returns结果

//默认自动ack,不确定是否处理完

spring.rabbitmq.listener.simple.acknowledge-mode=manual

Config类中

定制RabbitTemplate,setConfirmCallBack

手动ack

Channel.basicAck

Channel.basicNack 不确认,要不要重新入队

channel.basicReject,拒绝,重新发送给其他处理

实际项目

是否配置了手动ack,手动ack是不是都是非批量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值