rabbitmq学习笔记

概念

AMQP协议       网络应用层的高级协议

AMQP核心概念
server:broker,接受客户端连接
connection:客户端和服务端的连接
channel:网络通信,消息读写通道,客户端可以建立多个channel,每个channel代表一个会话。
     void basicPublish(String exchange, String routingKey, boolean mandatory, BasicProperties props, byte[] body)
    //配合returnlistner, mandatory=true,监听器可以收到路由不可达信息,false :broker会删除此消息
     channel.basicConsume(String queue, boolean autoAck, Consumer callback)
     // 消息消费的时候,手工签收 必须要关闭 autoAck = false
message:消息数据,结构(消息属性properties,消息内容body)
virtual host:逻辑隔离(一个virtual host可以有若干个不同名称的exchange和Queue)
当我们在创建用户时,会指定用户能访问一个虚拟机,并且该用户只能访问该虚拟机下的队列和交换机,如果没有指定,默认的是”/”;
一个rabbitmq服务器上可以运行多个vhost,以便于适用不同的业务需要,
这样做既可以满足权限配置的要求,也可以避免不同业务之间队列、交换机的命名冲突问题,因为不同vhost之间是隔离的

Exchange:交换机,根据路由键将消息转发到绑定的Queue,接受消息提供者(生产者)的消息,并根据消息的RoutingKey和Exchange绑定的BindingKey分配消息
        Exchange.DeclareOk exchangeDeclare(String exchange, String type, boolean durable, boolean autoDelete,Map<String, Object> arguments);
        //type:direct,topic,fanout,header
        //autoDelete true if the server should delete the exchange when it is no longer in use
        //arguments other properties (construction arguments) for the exchange
        
Binding:Exchange和Queue之间的绑定,包含多个routing key
    channel.queueBind(queueName, exchangeName, routingKey); 
    
Routing Key:一个路由规则,虚拟机使用它确定如何路由一个特定消息  user.*(匹配单个user.add),user.#(匹配多个字符,user.add.person)

Queue:消息队列 
    Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,Map<String, Object> arguments);
    queue:这没什么好说的,队列名
    durable:是否持久化,那么问题来了,这是什么意思?持久化,指的是队列持久化到数据库中。在之前的博文中也说过,如果RabbitMQ服务挂了怎么办,队列丢失了自然是不希望发生的。持久化设置为true的话,即使服务崩溃也不会丢失队列
    exclusive:是否排外,what? 这又是什么呢。设置了排外为true的队列只可以在本次的连接中被访问,也就是说在当前连接创建多少个channel访问都没有关系,但是如果是一个新的连接来访问,对不起,不可以,下面是我尝试访问了一个排外的queue报的错。
    还有一个需要说一下的是,排外的queue在当前连接被断开的时候会自动消失(清除)无论是否设置了持久化
    autoDelete:这个就很简单了,是否自动删除。也就是说queue会清理自己。但是是在最后一个connection断开的时候
    arguments:这个值得拿出来单讲一次,暂时不说

rabbitmq命令行 http://www.cnblogs.com/jtlgb/p/6600610.html
rabbitmqctl
rabbitMQ 常用命令
启动监控管理器:rabbitmq-plugins enable rabbitmq_management
关闭监控管理器:rabbitmq-plugins disable rabbitmq_management
启动rabbitmq:rabbitmq-service start
关闭rabbitmq:rabbitmq-service stop
查看所有的队列:rabbitmqctl list_queues
清除所有的队列:rabbitmqctl reset,rabbitmqctl stop_app之后执行
关闭应用:rabbitmqctl stop_app
启动应用&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值