RabbitMQ 入门资料



        在windows上安装rabbitmq后,自动注册service的话,默认的数据目录和配置目录为:C:\Users\xx\AppData\Roaming\RabbitMQ

这个可以在 rabbitmq-defaults.bat 中修改 RABBITMQ_BASE, RABBIT的一切配置和数据都基于此目录。 修改之后必须

Rabbitmq-service.bat stop,   Rabbitmq-service.bat remove, Rabbitmq-service.bat install, Rabbitmq-service.bat start

    因为设置这些环境变量是在安装service的时候,打开 rabbitmq-service.bat可以看到。

Rabbitmq-service.bat  调用 rabbitmq-env.bat, 调用 rabbitmq-defaults.bat,其中 rabbitmq-env.bat  会设置 set CONF_ENV_FILE=!RABBITMQ_BASE!\rabbitmq-env-conf.bat



RabbitMQ比较大一些,可以先看rabbitmq的管理使用的手册,可以通过网页查看rabbit目前的运行情况。

http://www.rabbitmq.com/management.html


rabbitmq的配置手册,可以配置持久化目录目录,日志目录等。

http://www.rabbitmq.com/documentation.html


可以看看rabbitmq的 AMP协议,理解一些概念,宏观上理解RabbitMQ。

http://www.rabbitmq.com/tutorials/amqp-concepts.html

       RabbitMQ可以包含多个VirtualHost,每个VirtualHost之间是互相独立的。安装后有一个默认virtualhost   /。

VirtualHost下面可以创建Exchanges Queues,默认情况下RabbitMQ会为每个VirtualHost创建几个默认的exchanges,

有 amq.direct,  amq.fanout, amp.headers, amp.topic等。消费者的queue可以绑定到这些不同类型的exchanges上,

以此来实现work queue,pub/sub, routing, topics 等功能。

Exchanges:

    创建Exchange时,可以指定exchange的名字,exchange的类型(Direct,Fanout, Headers,Topic),是否持久化(Durability),

Auto-Delete(最后一个exchange上的queue删除后, 该exchange自动删除)

    Direct exchange 可以绑定多个queue,如果多个queue的routing key一样,那么Direct的表现跟Fanout是一样。

    Fanout exchange  忽略routing key,把message推送给所有的queue。

    header exchange  忽略routing key, queueBind中的Map参数种加入要匹配的key:value, basicPublish中有props中可以设置Map。

            Map参数种必须有  { "x-match",headersType}, headersType为 any或者all. 用来说明如何匹配Map中其余的key:value。

    topic exchange   用routing key去匹配bind时候的pattern,这个比直接匹配routing key更广泛一点,可以匹配pattern。

Queues

     创建 queue时,可以指定queue的名字(amq开头的名字被保留),是否持久化(Durable),Exclusive(只被一个connection使用,当次connection代开后,

改queue会被删除),Auto-delete(当queue的最后一个消费者取消订阅后,改queue会被自动删除,不管queue中是否有数据)最后一个消费者的意思是,queue一定

要被消费者订阅过,没有被订阅过的queue是不会被删除的(比如刚被生产者创建的auto-delete的queue)

    生产者其实是先往exchange推送数据的,exchange根据指定的rouing key来推送到相应的queue。多个生产者可以往同一个exchange推送,多个queue可以bind到同一个

exchange。每个queue可以1个到多个消费者。当一个queue有多个消费者时,相当于load balance,任务会被平均分配到各个消费者。

   当生产者推送的消息exchange无法投递时,默认情况rabbitmq会丢弃改数据,但生产者在basicpublish时设置 mandatory为true,并且通过channel.addReturnListener就可以得到rabbimq返回的无法投递的报文。 如果投递到一个不存在的exchange,rabbitmq似乎只是默默的丢掉消息,不做任何反馈。


rabbitmq的api列表

https://www.rabbitmq.com/devtools.html


API使用简单介绍

http://www.rabbitmq.com/getstarted.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值