rabbitmq 简介

参考 https://www.rabbitmq.com/tutorials/amqp-concepts.html

几个重要的概念:

虚拟机(Virtual host):就像一个iis上挂多个服务一样,一个mq服务器也能提供多个相对独立的应用环境,用虚拟机的概念来区分,虚拟机下有不同的用户,交换机,队列,访问权限等。

交换机(Exchanage):从连接通道(Channel)接收消息,并按照ExchangeType 和特定的路由规则(binding)发送消息的拷贝给队列

交互机几个重要的属性:name 名称;

                               durability(持久化):持久化设计为true的交换机,broker重启后交换机依然存在。否则重启后交互机消失。

                                auto-delete:当所有队列都不用后,交互机会自动删除;  

交换机有四种类型:1.direct  :交互换机的默认类型。处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。

                         2.fanout : 不处理路由键,你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。

                         3.topic:将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词。

队列:消息最终的存储容器,直到消费客户端(Consumer)将其取走。

绑定: 也就是所谓的路由规则,告诉交换机将何种类型的消息发送到某个队列中。

消费者:存储在队列中的消息是没有用的,除非有应用程序去消费这个消息。应用程序通过订阅的方式表明它是哪个队列的消费者,一个队列可以有多个消费者,也可注册独占消费者。每个消费者都有自己唯一的cosumerTag.

消息确认:确定消息何时从队列中删除。有两中类型,一是自动确认机制:消息一发送到消费者立即删除,二是显示确认机制 收到消费者的确认消息后才删除。消费者何时发送确认消息呢?可以是收到消息后,也可以是收到消息并之久化后,也可以是收到消息并将消息处理完后。

拒绝消息(rejecting message):消费者可以通过拒绝消息想服务器表明消息处理失败。调用basic.reject;

Connection和Channel:建立与rabbitmq server的一个连接,由ConnectionFactory创建.Channel建立在connection基础上的一个频道,相对于connection来说,它是轻量级的。可以理解成一次会话。

 using (IConnection connection = factory.CreateConnection())
    {
        using (IModel channel = connection.CreateModel())
        {
//do something
        }
    }

 

posted @ 2016-10-19 17:03  xubenhua  阅读(177)  评论(0编辑  收藏  举报