• 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是不是都是非批量

  • 相关阅读:
    python_栈的应用:中缀表达式转换为后缀表达式
    什么是IPQC(制程控制)?
    C和指针 第10章 结构和联合 10.11 编程练习
    软件项目移交运维计划
    C/C++和Python编程时NULL和None傻傻分不清楚
    【Dart】002-函数
    远程医疗解决方案-最新全套文件
    华为机试题输入输出总结
    MVC三层架构
    极简实用PyTorch记录——如何读取图片、改变大小、转化为numpy数组、转化为tensor
  • 原文地址:https://blog.csdn.net/zhangbinHn/article/details/126583396