-
消息确认模式,消息发出去之后异步的等待。
查看全部 -
默认的主机是/
也可以自己建虚拟主机,回头看看是怎么用的。
查看全部 -
rabbitmq启动它拥有的一些插件
查看全部 -
整个安装过程
查看全部 -
第一步erlan那一个
第二步socat那一个
第三步 rabbitmq那一个
查看全部 -
消息可靠性图
查看全部 -
消息投靠方案设计
查看全部 -
9llojjl9llljlll lj5 lll laaaaaa aaaa lcl l jl lll查看全部
-
消息投递成功设计方案:
查看全部 -
AMQP核心概念
Server:又称Broker,接受客户端的连接,实现AMQP实体服务
Connection:连接,应用程序与Broker的网络连接
Chnnel:网络通道,几乎所有的操作都在Channel中进行,Channel是实进行消息读写的通道。客户端可以建立多个Channel,每个Channel代表一个会话任务。
Message:消息。服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。
Virtual host:虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个Virtual Host里面可以有若干个Exchange和Queue,同一个Virtual Host里面不能有相同名称的Exchage或Queue。
Exchange:交换机,接收消息,根据路由键转发消息到绑定的队列。
Binding:Exchange和Queue之间的虚拟连接,binding中可以包含 routing key。
Routing key:一个路由规则,虚拟机可用它来确定如何路由一个特定消息。
Queue:也称为Message Queue ,消息队列,保持消息并将它们转发给消费者。
查看全部 -
RabbitMQ简介及AMPQ协议
RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ 是使用Erlang 语言来编写的,并且RabbitMQ是基于AMQP协议的。
RabbitMQ底层采用Erlang 语言进行编写
开源、性能优秀,稳定性保障
与SpringAMQP完美的整合、API丰富
集群模式丰富,表达式配置,HA模式,镜像队列模型
保证数据不丢失的前提做到高可靠性、可用性
AMQP全程:Advanced Message Queuing Protocol
AMQP翻译:高级消息队列协议
AMQP协议模型
查看全部 -
package com.mfl.demo.utils; import com.mfl.demo.entity.Order; import com.rabbitmq.client.Channel; import org.springframework.amqp.rabbit.annotation.*; import org.springframework.amqp.support.AmqpHeaders; import org.springframework.messaging.handler.annotation.Headers; import org.springframework.messaging.handler.annotation.Payload; import org.springframework.stereotype.Component; import java.util.Map; @Component public class MessageConsumerUtils { @RabbitListener(bindings = @QueueBinding(value = @Queue(value = "mfl-1-queue",durable = "true"), exchange = @Exchange(name = "mfl-1-exchange", type = "topic"), key = "order.*" )) @RabbitHandler //Payload 指定消息体是order public void receive(@Payload Order order, @Headers Map<String,Object> headers, Channel channel) throws Exception{ System.out.println("-------收到消息,开始消费---------"); System.out.println(order.getName()); Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG); // deliveryTag:该消息的index // multiple:是否批量.true:将一次性ack所有小于deliveryTag的消息。 channel.basicAck(deliveryTag,false); } }
配置文件:
## springboot整合rabbitmq基本配置 spring.rabbitmq.addresses=192.168.254.135:5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.virtual-host=/ spring.rabbitmq.connection-timeout=15000 ## springboot整合rabbitmq消费端配置 #线程数 spring.rabbitmq.listener.simple.concurrency=5 #签收模式manual:手工签收 auto自动签收 none不签收 spring.rabbitmq.listener.simple.acknowledge-mode=manual #最大线程数 spring.rabbitmq.listener.simple.max-concurrency=10 #限流,每个线程同一时间只能过来一条消息,消费完了再取下一条 spring.rabbitmq.listener.simple.prefetch=1 server.servlet.context-path=/ server.port=8002
查看全部 -
package com.mfl.demo.utils; import com.mfl.demo.entity.Order; import org.springframework.amqp.rabbit.connection.CorrelationData; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class MessageProducerUtils { @Autowired private RabbitTemplate rabbitTemplate; public void send(Order order) throws Exception{ rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> { System.out.println("correlationData:"+correlationData); if(ack){ System.out.println("回调成功--------"); }else { System.out.println("回调失败,异常处理............."+cause); } }); CorrelationData correlationData = new CorrelationData(); correlationData.setId(order.getMessageId()); rabbitTemplate.convertAndSend("mfl-1-exchange", //交换机 "order.abcd",//rountingKey order,//消息内容 correlationData);//消息唯一id } }
回调函数需要在生产者代码配置文件里配置
spring.rabbitmq.publisher-confirm-type=correlated
查看全部 -
源码路径:https://github.com/suxiongwei/springboot-rabbitmq
安装顺序:若提前安装3,会提示缺少秘钥
1、 rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
2、rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
3、rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
查看全部 -
RabbitMQ的安装过程
1.准备:
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
2.下载
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
3.配置:
vim /etc/hosts 以及 /etc/hostname
配置文件:
vi /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
比如修改密码、配置等等,例如:loopback_users 中的 <<"guest">>,只保留guest, 用于登陆管控台
启动:rabbitmq-server start &
停止: rabbitmqctl app_stop
4.管理插件:启用管控台
rabbitmq-plugins enable rabbitmq_management
5.访问地址:http://127.0.0.1:15672/
查看全部
举报