rabbitmq学习笔记

1 基本概念

  • rabbitmq server(broker server):rabbitmq服务 client:包括producers和consumer
  • message:包括payload和label exchange:producer发布message的地方
  • queue:messages存放和consumer收取message的地方
  • bindings:将message从exchange到不同queue的实现
  • connection:tcp连接,producer和consumer都是通过connection到rabbitmq server
  • channels:虚拟连接,建立在connection上,在创建后connection创建,需要基于channels进行通信

使用channel而不是使用tcp通信的原因:关闭tcp连接代价较大,channel是tcp连接上的虚拟连接概念,关闭连接没有代价,感觉有点像golang的goroutine概念

2 基本机制

ack

ack配置和相应策略?

queue

  • 创建:建议producer和consumer都try create queue
  • try create:当queue存在,try create不会改变其属性

exchange

  • direct:以routing key直接匹配到对应queue
  • fanout:广播给queue
  • topic:可以对key进行正则匹配,比如ab*传递给所有以ab开头的queue

virtual hosts

隔离,本质上是个rabbitserver,拥有自己的queue,exchange,bings rule等

3 开发

持久化: 
- 队列持久化和消息持久化区别?http://blog.csdn.net/hanruikai/article/details/42778921

时间: 2024-08-05 14:16:58

rabbitmq学习笔记的相关文章

RabbitMQ学习笔记五:RabbitMQ之优先级消息队列

RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java实现RabbitMQ之与Spring集成 最后面有下载地址,只是做了少许改变,改变的代码如下: 消费者 spring-config.xml(还需要增加一个QueueListener监听器,代码就不复制到这里了,可以参考项目中的其他监听器) <!-- =========================

RabbitMQ学习笔记4-使用fanout交换器

fanout交换器会把发送给它的所有消息发送给绑定在它上面的队列,起到广播一样的效果. 本里使用实际业务中常见的例子, 订单系统:创建订单,然后发送一个事件消息 积分系统:发送订单的积分奖励 短信平台:发送订单的短信 消息生产者SenderWithFanoutExchange 1 package com.yzl.test3; 2 3 import java.util.Date; 4 5 import com.google.gson.Gson; 6 import com.rabbitmq.clie

RabbitMQ学习笔记2-理解消息通信

消息包含两部分:1.有效载荷(payload) - 你想要传输的数据.2.标签(lable) - 描述有效载荷的相关信息,包含具体的交换器.消息的接受兴趣方等. rabbitmq的基础流程如下: RabbitMQ的客户端和服务端通过channel与RabbitMQ服务器进行通信. Channel(信道):程序和RabbitMQ之间的连接是通过channel,channel是基于TCP协议之上的?, 一个TCP连接可以有多个channel,可以比喻成如下:一根大电缆里面有很多根小的电线,大电缆就是

rabbitmq学习笔记1 安装和配置

环境 OS: CentOS Linux release 7.1.1503 (Core) kernel:3.10.0-229.el7.x86_64 安装 参考:http://www.rabbitmq.com/install-rpm.html Erlang rabbitmq 从官网:http://www.rabbitmq.com/,找出最新版本为3.6.2

rabbitmq学习笔记2 基本概念

官网:http://www.rabbitmq.com 参考:http://blog.csdn.net/column/details/rabbitmq.html 1 基本概念 rabbitmq server(broker server):rabbitmq服务 client:包括producers和consumer message:包括payload和label exchange:producer发布message的地方 queue:messages存放和consumer收取message的地方 b

使用php-amqplib连接rabbitMQ 学习笔记及总结

1.使用composer安装php-amqplib 在你的项目中添加一个 composer.json文件: { "require": { "php-amqplib/php-amqplib": "2.6.*" } } 只要你已经安装Composer功能,你可以运行以下: $ composer install 已经存在的项目则执行 $ composer update这时在verdor目录就已经下载完毕 具体可以参考官方文档:https://githu

RabbitMQ学习笔记3-使用topic交换器

本例使用topic接收警告.错误的日志,并根据匹配的路由规则发送给不同的Queue队列来处理的例子: 日志生产者SenderWithTopicExchange 1 package com.yzl.test2; 2 3 import java.util.concurrent.CountDownLatch; 4 import java.util.concurrent.ExecutorService; 5 import java.util.concurrent.Executors; 6 7 impor

rabbitMQ学习笔记(五) 消息路由

生产者会生产出很多消息 , 但是不同的消费者可能会有不同的需求,只需要接收指定的消息,其他的消息需要被过滤掉. 这时候就可以对消息进行过滤了. 在消费者端设置好需要接收的消息类型. 如果不使用默认的Exchange发送消息,而是使用我们自定定义的Exchange发送消息,那么下面这个方法的第二个参数就不是QueueName了,而是消息的类型. channel.basicPublish( exchangeName , messageType , null , msg.getBytes()); 示例

rabbitMQ学习笔记(一)Windows 与Linux下rabbitMQ的安装

版权声明:本文为博主原创文章,未经博主允许不得转载. Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; m