初识 rabbitmq

你好 rabbitmq

一、重要概念理解:AMQP协议, 生产者,消息队列,发布订阅,路由,交换机,消费者,消息确认

  1. (Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议,是一个使用 TCP 提供可靠投递的应用层协议。在这里插入图片描述
  2. 交换机类型:在这里插入图片描述注意:Default:自动命名的直交换机
  3. 路由 routing_key,: 1 .扇型交换机以广播形式处理消息,所以会忽略routing_key;2.直连交换机则是严格意义上的匹配,换言之 Routing Key 必须与 Binding Key 相匹配的时候才将消息传送给 Queue;3.而主题交换机则是模糊匹配Routing Key(一个句点号 “.” 分隔的字符串),通过通配符满足一部分规则就可以传送,如 “” 与“#”,用于做模糊匹配,其中 “” 用于匹配一个单词,“#”用于匹配多个单词; 4.头交换机不依赖于 routing key 与 binding key 的匹配规则来路由消息,而是根据发送的消息内容中的 headers 属性进行匹配,可以视为直连交换机的另一种表现形式, header头携带的 “x-match” 参数。当 “x-match” 设置为 “any” 时,消息头的任意一个值被匹配就可以满足条件,而当 “x-match” 设置为 “all” 的时候,就需要消息头的所有值都匹配成功
  4. 消息确认:消费者确认消息消费了之后的反馈
  5. 队列queue: Name 名称 Durable(消息代理重启后,队列存储在磁盘)Exclusive(一个连接(connection)关闭后队列即被删除)Auto-delete(当最后一个消费者退订后即被删除)Arguments
  6. AMQPMessage对象属性:
    ‘content_type’ => ‘shortstr’,
    ‘content_encoding’ => ‘shortstr’,
    ‘application_headers’ => ‘table_object’,
    ‘delivery_mode’ => ‘octet’,
    ‘priority’ => ‘octet’,
    ‘correlation_id’ => ‘shortstr’,
    ‘reply_to’ => ‘shortstr’,
    ‘expiration’ => ‘shortstr’,
    ‘message_id’ => ‘shortstr’,
    ‘timestamp’ => ‘timestamp’,
    ‘type’ => ‘shortstr’,
    ‘user_id’ => ‘shortstr’,
    ‘app_id’ => ‘shortstr’,
    ‘cluster_id’ => ‘shortstr’,

二、配置文件重要字段:
listeners.tcp.default = 5672
handshake_timeout = 10000
disk_free_limit.absolute = 50MB
disk_free_limit.relative = 3.0
vm_memory_high_watermark.relative = 0.6
vm_memory_high_watermark.absolute = 2 GB
vm_memory_high_watermark_paging_ratio = 0.5
log.file.level =info(error|warning|debug)
channel_max = 2047 (0无限制)
max_message_size(134217728到536870912)
heartbeat = 60
default_vhost = /
default_user = guest
default_pass = guest
default_permissions.configure =.*
default_permissions.read =.*
default_permissions.write =.*
proxy_count = 16
cluster_keepalive_interval = 10000
queue_index_embed_msgs_below = 4096
//高级部分
{rabbit, [
{msg_store_file_size_limit, 16777216},
{queue_index_max_journal_entries,32768 }
]}

四、代码部分(php为例)

1、发送者
$connect = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connect->channel();
//声明交换机 logs
$channel->exchange_declare('logs', 'direct', false, true, false);
$msg = new AMQPMessage('this is log contents that your writes');
//发布
$channel->basic_publish($msg, 'logs');
$channel->close();
$connect->close();

2、消费者
$connect = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connect->channel();
$channel->exchange_declare('logs', 'direct', false, false, false);
list($queue_name, ,) = $channel->queue_declare("", false, false, false, false);
$channel->queue_bind($queue_name, 'logs', 'routing_key'); //交换机是扇形讲忽略‘routing_key’
$callback = function ($msg) {
    echo ' [x] ', $msg->body, "\n";
};
$channel->basic_consume($queue_name, '', false, true, false, false, $callback);
while ($channel->is_open()) {
    $channel->wait();
}
/$channel->close();
$connect->close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值