rabbitmq基础

Exchange的三种type

Direct Exchange –通过binding key的完全匹配,binding key的名称与queue name的名称相同。 当P publish key是orange时,exchange会把它放到Q1。如果是black或者green那么就会到Q2。其余的Message都会被丢弃

Fanout Exchange – 不通过bindingkey路由消息,exchange会将所有的Message都放到它所知道的queue中。你只需要简单的将queue绑定到exchange上。一个发送到exchange的消息都会被转发到与该exchange绑定的所有queue上。Fanout类型的exchange转发消息是最快的。

Topic Exchange – 将bingdingkey和某模式进行匹配。此时queue需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词。

Round-robin dispatching 循环分发机制
默认情况下,RabbitMQ 会顺序的分发每个Message。当每个收到ack后,会将该Message删除,然后将下一个Message分发到下一个Consumer。这种分发方式叫做round-robin。
RabbitMQ的分发机制非常适合扩展,而且它是专门为并发程序设计的。如果现在load加重,那么只需要创建更多的Consumer来进行任务处理即可。当然了,对于负载还要加大怎么办?我没有遇到过这种情况,那就可以创建多个virtual Host,细化不同的通信类别了。

Message acknowledgment 消息确认机制
http://blog.csdn.net/lmj623565791/article/details/37620057
为了保证数据不被丢失,RabbitMQ支持消息确认机制,即acknowledgments。为了保证数据能被正确处理而不仅仅是被Consumer收到,那么我们不能采用no-ack。而应该是在处理完数据后发送ack。在处理数据后发送的ack,就是告诉RabbitMQ数据已经被接收,处理完成,RabbitMQ可以去安全的删除它了。如果Consumer退出了但是没有发送ack,那么RabbitMQ就会把这个Message发送到下一个Consumer。这样就保证了在Consumer异常退出的情况下数据也不会丢失。默认情况下,消息确认是打开的(enabled)。
Message durability消息持久化机制
Message acknowledgment机制保证了consumer异常退出,message不会丢失,但是如果RabbitMQ Server退出呢? 为了保证在RabbitMQ退出或者crash了数据仍没有丢失,需要将queue和Message都要持久化。
Fair dispatch 公平分发机制
默认状态下,RabbitMQ将第n个Message分发给第n个Consumer。当然n是取余后的。它不管Consumer是否还有unacked Message,只是按照这个默认机制进行分发。那么如果有个Consumer工作比较重,那么就会导致有的Consumer基本没事可做,有的Consumer却是毫无休息的机会。通过 basic.qos 方法设置prefetch_count=1 。这样RabbitMQ就会使得每个Consumer在同一个时间点最多处理一个Message。换句话说,在接收到该Consumer的ack前,他它不会将新的Message分发给它
rabbitmqctl命令行管理工具
rabbitmqctl是一个简单的命令行工具用于管理RabbitMQ Server,在shell中执行如下命令,能看到各种命令简价:

Usage:

rabbitmqctl [-n ] [-q] []

Options:

-n node

-q

Commands:

stop [<pid_file>]

stop_app

start_app

wait <pid_file>

reset

force_reset

rotate_logs <suffix>

join_cluster <clusternode>[<--ram>]

cluster_status

change_cluster_node_type disc | ram

forget_cluster_node [--offline]

update_cluster_nodes clusternode


add_user <username> <password>

delete_user <username>

change_password <username> <newpassword>

clear_password <username>

set_user_tags <username> <tag> ...

list_users

add_vhost <vhostpath>

delete_vhost <vhostpath>

list_vhosts [<vhostinfoitem> ...]

set_permissions [-p <vhostpath>] <user> <conf> <write> <read>

clear_permissions [-p <vhostpath>] <username>

list_permissions [-p <vhostpath>]

list_user_permissions <username>


set_parameter [-p <vhostpath>] <component_name> <name> <value>

clear_parameter [-p <vhostpath>] <component_name> <key>

list_parameters [-p <vhostpath>]


set_policy [-p <vhostpath>] <name> <pattern>  <definition> [<priority>] 

clear_policy [-p <vhostpath>] <name>

list_policies [-p <vhostpath>]


list_queues [-p <vhostpath>] [<queueinfoitem> ...]

list_exchanges [-p <vhostpath>] [<exchangeinfoitem> ...]

list_bindings [-p <vhostpath>] [<bindinginfoitem> ...]

list_connections [<connectioninfoitem> ...]

list_channels [<channelinfoitem> ...]

list_consumers [-p <vhostpath>]

status

environment

report

eval <expr>

close_connection <connectionpid> <explanation>

trace_on [-p <vhost>]

trace_off [-p <vhost>]

set_vm_memory_high_watermark <fraction>

must be a member of the list [name, tracing].

The list_queues, list_exchanges and list_bindings commands accept an optional virtual host parameter for which to display results. The default value is “/”.

must be a member of the list [name, durable, auto_delete, arguments, policy, pid, owner_pid, exclusive_consumer_pid, exclusive_consumer_tag, messages_ready, messages_unacknowledged, messages, consumers, active_consumers, memory, slave_pids, synchronised_slave_pids].

must be a member of the list [name, type, durable, auto_delete, internal, arguments, policy].

must be a member of the list [source_name, source_kind, destination_name, destination_kind, routing_key, arguments].

must be a member of the list [pid, name, port, host, peer_port, peer_host, ssl, ssl_protocol, ssl_key_exchange, ssl_cipher, ssl_hash, peer_cert_subject, peer_cert_issuer, peer_cert_validity, last_blocked_by, last_blocked_age, state, channels, protocol, auth_mechanism, user, vhost, timeout, frame_max, client_properties, recv_oct, recv_cnt, send_oct, send_cnt, send_pend].

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值