rabbitmq学习笔记
消息型中间件:
AMQP协议:高级消息队列协议
AMQP 0-9-1
AMQP 1.0
路由模型:
direct
topic
fan-out
headers
broker:
exchange
binding
queue
virtualhost:虚拟主机
exchange
binding
queue
中间件的实现:
Qpid,ActiveMQ(apache)
RabbitMQ
kafka 重量型的模型中
oMQ
rabbitmq:
程序包:
epel:rabbitmq-server
插件:rabbitmq_plugins{enable|disable|list}
rabbitmq_management,监听于15672端口
配置方式:
环境变量:网络参数及配置文件路径
配置文件:服务器各组件访问权限、限制
运行时参数:集群的运行参数;
环境变量:/etc/rabbitmq/rabbitmq-env.conf
PABBITMQ_BASE:数据库和日志文件;,对于Unix_like主机不常用;
RABBITMQ_CONFIG_FILE:配置文件路径;/etc/rabbitmq/rabbitmq
RABBITMQ_LOGS;
PABBITMQ_NODE_IPADDRESS:监听的IP;
RABBITMQ_NODE_PORT:
PABBITMQ_PLUGINS_DIR:
配置文件:
auth_mechanisms:认证机制,SASL:简单认证安全层;
default_user:guest
deault_pass:guest
defauit_permission:
disk_free_limit:
heartbeat:580ms
hipe_compile:
log_levels:{none|error|warning|info}
tcp_listenders:监听的地址和端口
ssl_listeners:基于ssl通信协议监听的地址和端口
vm_memory_high_watermark:内存的高水位标记
运行时参数:
rabbitmqctl命令:
命令行语法风格:使用下划线
rabbitctl status 查看服务状态
rabbitctl stop_app 不指定则停止所有应用
rabbitctl start_app
rabbitctl add_user <username> <password>
rabbitctl set_user_tags <username> <tags>
list_users
权限管理:
组件查看命令:
broker状态查看
status
环境变量查看
environment
执行erlang底层命令
eval <expr>
关闭指定连接
close_connection <connectionid> <explanation>
设定内存的高水位标记:
set_vm_memory_high_watermark<fraction>
rabbitctl list_permissions -p VHOST 指定虚拟主机,不指定则显示根(以主机为中心)
rabbitctl list_user_permissions (以用户为中心的参数查询)
rabbitmq cluster:
(1)使用短格式主机名;解析的名称与每个主机名称保存一致;
(2)时间同步
(3)各节点要启动rabbitmq_management插件;
(4)配置过程;
在master节点:
复制其cookie至其他各节点,注意保持其权限为400;
/var/lib/rabbitmq/.erlang.cookie
在各从节点:
停止应用:
rabbitmqctl stop_app
加入集群:
rabbitmqctl join_cluster CLUSTER_NAME
启动应用:
rabbitmqctl start_app
基于haproxy的LB集群:
listen rabbitmq:5672
mode tcp
status enable
balance roundrobin
server rabbit01 IP:PORT check inter 5000
server rabbit02 IP:PORT check inter 5000