`

rabbitMQ

 
阅读更多
RabbitMQ是一个消息代理,核心原理:发送消息,接收消息。
RabbitMQ主要用于组件之间的解耦,消息发送者无需知道消息使用者的存在,反之亦然。

Broker:消息队列服务器实体

消息:每个消息都有一个路由键(routing key)的属性。就是一个简单的字符串。

connection:应用程序与broker的网络连接。

channel:几乎所有的操作都在channel中进行,channel是进行消息读写的通道。客户端可建立多个channel,每个channel代表一个会话任务。

交换机:接收消息,根据路由键转发消息到绑定的队列。

绑定:一个绑定就是基于路由键将交换机和队列连接起来的路由规则,所以交换机不过就是一个由绑定构成的路由表。

举例:一个具有路由键“key1”的消息要发送到两个队列,queueA和queueB。要做到这点就要建立两个绑定,每个绑定连接一个交换机和一个队列。两者都是由路由键“key1”触发,这种情况,交换机会复制一份消息并把它们分别发送到两个队列中。

队列:消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。
交换机用来接收消息,转发消息到绑定的队列,是rabbitMq中的核心。
交换机共有4种类型:direct,topic,headers和fanout。


生产者: public void basicPublish(java.lang.String exchange,
                java.lang.String routingKey,
                AMQP.BasicProperties props,
                byte[] body)
                  throws java.io.IOException
channel.basicPublish("", queueName, MessageProperties.PERSISTENT_BASIC, messageBytes);
如果exchange是"",使用匿名的exchange?绑定到queueName的队列上。

为了保证消息永远不会丢失,RabbitMQ支持消息应答(message acknowledgments)。消费者发送应答给RabbitMQ,告诉它信息已经被接收和处理,然后RabbitMQ可以自由的进行信息删除。
如果消费者被杀死而没有发送应答,RabbitMQ会认为该信息没有被完全的处理,然后将会重新转发给别的消费者。通过这种方式,你可以确认信息不会被丢失,即使消者偶尔被杀死。
这种机制并没有超时时间这么一说,RabbitMQ只有在消费者连接断开是重新转发此信息。如果消费者处理一个信息需要耗费特别特别长的时间是允许的。
消息应答默认是打开的。

boolean ack = false ; //打开手动应答机制 
channel.basicConsume(QUEUE_NAME, ack, consumer); 
//另外需要在每次处理完成一个消息后,手动发送一次应答。 
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); 


队列声明:
public AMQImpl.Queue.DeclareOk queueDeclare(java.lang.String queue,
                                   boolean durable,
                                   boolean exclusive,
                                   boolean autoDelete,
                                   java.util.Map<java.lang.String,java.lang.Object> arguments)
                                     throws java.io.IOException

channel.queueDeclare(queueName, true, settings.isExclusive(), false, null);//开启持久化,不自动删除

队列的属性:
持久性:如果启用,队列将在Server服务重启前都有效。
自动删除:如果启用,那么队列将会在所有的消费者停止使用之后自动删除自身。
惰性:如果没有声明队列,那么在执行到使用的时候会导致异常,并不会主动声明。
排他性:如果启用,队列只能被声明它的消费者使用。 
  • 大小: 65.3 KB
  • 大小: 143 KB
  • 大小: 80.6 KB
  • 大小: 31.4 KB
分享到:
评论

相关推荐

    RabbitMQ快速入门及API介绍(401M)

    【课程目录】:---第一章:RabbitMQ介绍----1-什么是消息中间件.mp4----2-RabbitMQ消息队列安装:window环境.mp4----3-RabbitMQ消息队列安装 :Linux环境.mp4----4-Rabbitmq入口示例:server.mp4----5-rabbitmq入口...

    批量删除rabbitmq的队列或交换机

    采用python编写的批量删除rabbitmq的队列或交换机。 1.修改rabbitmq_delete.py中rabbitmq的配置; 2.执行以下命令: 删除队列: python3 rabbitmq_delete.py -k ‘udata.climb’ -d 1 删除交换机: python3 rabbitmq_...

    rabbitmq-java (2).zip

    rabbitmq

    rabbitmq配置文件 rabbitmq.config

    rabbitmq配置文件,用于rabbitmq管理

    RabbitMQ工具类及测试类(完整版)

    RabbitMQClientUtil是MQ的测试工具类,他封装了fanout、direct、topic三种exchange模式,并包括发送数据和接收数据。...rabbitmq.properties配置文件根据自己需要自行放在,放置完毕后,请自己修改util中的文件地址

    RabbitMQ rabbitmq-server-3.6.12-1.el6.noarch 及其安装所需要的软件打包

    RabbitMQ rabbitmq-server-3.6.12-1.el6.noarch 及其安装所需要的软件打包都在这里面,主要报卡一下软件:socat-1.7.3.2.tar.gz、rabbitmq-server-3.6.12-1.el6.noarch.rpm、rabbitmq-release-signing-key.asc、otp_...

    SpringBoot整合RabbitMQ.zip

    SpringBoot整合RabbitMQ的详细过程 **1.该篇博文首先讲述了交换机和队列之间的绑定关系** ①direct、②fanout、③topic **2.然后讲消息的回调** 四种情况下,确认触发哪个回调函数: ①消息推送到server,但是在...

    【BAT必备】rabbitMq面试题

    【BAT必备】rabbitMq面试题【BAT必备】rabbitMq面试题【BAT必备】rabbitMq面试题【BAT必备】rabbitMq面试题【BAT必备】rabbitMq面试题【BAT必备】rabbitMq面试题【BAT必备】rabbitMq面试题【BAT必备】rabbitMq面试题...

    rabbitmq-server-3.7.3

    RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在...

    windows版本rabbitmq安装包

    windows版本rabbitmq安装包 里面内含rabbitmq-server-3.9.13.exe、otp_win64_24 内含rabbitmq_delayed_message_exchange-3.9.0.ez 插件

    ARM版本的 rabbitmq docker镜像资源

    ARM版本的 rabbitmq 镜像资源 版本 3.8.9 使用拷贝到主机 执行:docker load &lt; rabbitmq_arm3.8.9.tar 生成docker镜像

    rabbitmq 3.9.3 配置文件

    rabbitmq 3.9.3 配置文件

    tp6使用rabbitmq

    tp6使用rabbitmq

    rabbitmqadmin

    RabbitMQ命令行手动创建队列rabbitmqadmin用法 手动创建队列方法:登录http://ip:15672/cli下载 将下载的rabbitmqadmin放到/usr/sbin目录下,并赋予权限:chmod 755 rabbitmqadmin 查看命令帮助信息: python ...

    flink-sql集成rabbitmq

    flink-sql集成rabbitmq

    RabbitMQ消息模式之Confirm确认消息

    理解Confirm消息确认机制 消息的确认,是指生产者投递消息后,如果Broker收到消息,则会给我们生产者一个应答。生产者进行接收应答,用来确定这条消息是否正常的发送到Broker,...import com.rabbitmq.client.Queuein

    rabbitMq window10安装包

    rabbitMq window10安装包

    Linux下安装RabbitMQ

    以rabbitmq3.6版本为例

    RabbitMQ使用指南.pdf

    RabbitMQ下载安装配置使用指南官方手册

    RabbitMQ源码和客户端工具

    RabbitMQ源码和客户端工具RabbitMQ源码和客户端工具

Global site tag (gtag.js) - Google Analytics