rabbitMQ基础理解

@rabbitMQ基础理解

rabbitMQ基础理解

rabbitMQ消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。

AMQP协议:程序A(生产者 Producer )先创建一个连接(Connection)把消息(Message)推送到中间件rabbitMQ的交换机(Exchange),交换机通过路由键(Routing Key)绑定(Binding)到队列(Queue)中,程序B(消费者 Consumer)也创建一个连接去监听着对应的队列中拉去消息去处理或消费

来张图片理解AMQP协议: 在这里插入图片描述
居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

RabbitMQ安装和启动

1.安装安 erlang环境环
erlang有2种安装方式:

  • 1.安装安 erlang环境环
    • erlang有2种安装方式:
      • 1.1 :新增文件 vim /etc/yum.repos.d/rabbitmq_erlang.repo,在文件里面新增下面内容并保存:
vim /etc/yum.repos.d/rabbitmq_erlang.repo
[rabbitmq_erlang] 
name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 
gpgcheck=1 
enabled=1 # PackageCloud's repository key and RabbitMQ package signing key 
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
	   https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] 
name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS 
repo_gpgcheck=1 
gpgcheck=0 
enabled=1 # PackageCloud's repository key and RabbitMQ package signing key 
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey 
https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
sslverify=1 
sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
  • 1.2 :在centos控制台输入
yum install erlang
  • 2.安装包安装erlang
    – 安装依赖环境
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel

下载Erlang

wget http://erlang.org/download/otp_src_21.3.tar.gz

解压,进入解压后的Erlang目录,构建,配置安装

tar -xvzf otp_src_21.3.tar.gz
cd otp_src_21.3
yum install -y autoconf
./otp_build autoconf
./configure
make && make install

配置环境变量,在末尾加上,重新加载环境变量

vim /etc/profile

export ERLANG_HOME=/usr/local/lib/erlang #这里写你电脑上面的路径 export PATH=$PATH:$ERLANG_HOME/bin

source /etc/profile

查看:erl
以上是安装erlang的两种方式

  1. 安装 rabbitmq
    下载安装包并安装

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.1/rabbitmq-server-3.8.1-1.el7.noarch.rpm

yum install rabbitmq-server-3.8.1-1.el7.noarch.rpm

启动,加入开机启动,执行命令,查看rabbitmq的状态


rabbitmq-server start

chkconfig rabbitmq-server on

rabbitmqctl status

在这里插入图片描述
5、启用web管理插件,这样子才能支持浏览器访问rabbitmq

rabbitmq-plugins enable rabbitmq_management

设置操作系统字符集utf-8

vim /etc/profile

文件末尾加上:

export LC_ALL=en_US.UTF-8

然后

source /etc/profile

浏览器的访问注意一下端口的开启

PHP的使用初体验:
生产者代码 publisher.php :

<?php
//申明连接参数
$config = [
    'host'=>'127.0.0.1',
    'vhost'=>'/',
    'port'=>5672,
    'login'=>'test',
    'password'=>'123456'
];

$cnn = new AMQPConnection($config);

//抛出异常
if(!$cnn->connect()){
    echo "连接失败";
    exit();
}
$cn = new AMQPChannel($cnn);
$ex = new AMQPExchange($cn);

$routingKey = 'key_1';
$exchangeName = 'exchange_1';
$ex->setName($exchangeName);
//设置交换机的类型
$ex->setType(AMQP_EX_TYPE_DIRECT);

//设置交换机的持久
$ex->setFlags(AMQP_DURABLE);

//申明交换机
$ex->declareExchange();

for($i=1;$i<=10;$i++){
    //消息内容
    $msg = [
        'data'=>'消息_'.$i,
    ];
    $ex->publish(json_encode($msg), $routingKey
        , AMQP_NOPARAM, array('delivery_mode' => 2));
}

消费者代码 consumer.php:

<?php
//申明连接参数
$config = [
    'host'=>'127.0.0.1',
    'vhost'=>'/',
    'port'=>5672,
    'login'=>'test',
    'password'=>'123456'
];

//连接broker,创建一个rabbitmq连接
$cnn = new AMQPConnection($config);

//抛出异常
if(!$cnn->connect()){
    echo "连接失败";
    exit();
}

//在连接内创建一个通道
$ch = new AMQPChannel($cnn);

//创建一个交换机
$ex = new AMQPExchange($ch);

//申明路由键
$routingKey = 'key_1';

//申明交换机名称
$exchangeName = 'exchange_1';

//设置交换机名称
$ex->setName($exchangeName);

//设置交换机的类型
$ex->setType(AMQP_EX_TYPE_DIRECT);

//设置交换机的持久
$ex->setFlags(AMQP_DURABLE);

//申明交换机
$ex->declareExchange();

//创建一个消息队列
$q = new AMQPQueue($ch);

//设置队列名称
$q->setName('queue_1');

//设置队列的持久
$q->setFlags(AMQP_DURABLE);

//申明消息队列
$q->declareQueue();

$q->bind($ex->getName(), $routingKey);

//接收消息并进行处理回调方法
function receive($envelope, $queue){
    sleep(1);
    echo $envelope->getBody()."\n";
}
$q->consume("receive");

动手的同时记一下吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值