在php中使用rabbitmq从概念到实战

首先要知道amqp协议是做什么的,amap是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,rabbitmq就是实现了这个协议的一个软件。
消息者

<?php
//创建连接-->
//创建channel-->
//创建交换机-->
//创建队列-->
//绑定交换机/队列/路由键-->
//接收消息
$conn_args = array(
    'host' => '127.0.0.1',
    'port' => '5672',
    'login' => 'guest',
    'password' => 'guest',
    'vhost'=>'/'
);
//交换机名消息是不能直接发送到队列,它需要发送到交换器
$e_name='e_zcj';//交换机名
$q_name="q_zcj";//队列名
$k_route="key_1";//路由key
//连接到borker和实例一个channel
$conn=new AMQPConnection($conn_args);
if(!$conn->connect()){
    // AMQP服务器端可称为broker
    die("Cannot connect to the broker");
}
//实例channel
//大部分的业务操作是在rabbitmq中提供Channel这个接口中完
//成的,在php相应的扩展中的Amapchanenl需要连接的实例包
//括定义Queue、定义Exchange、绑定Queue与Exchange、发布
//消息
$channel=new AMQPChannel($conn);
//创建交换机
$ex=new AMQPExchange($channel);
$ex->setName($e_name);
//设置交换机类型
$ex->setType(AMQP_EX_TYPE_DIRECT);//direct类型
$ex->setFlags(AMQP_DURABLE);//持久化 
//输出交换机状态
echo "Exchange Status:".$ex->declare()."\n";

//创建队列
$q=new AMQPQueue($channel);
$q->setName($e_name);//队列名
//持久化 这个方法做了什么去看c源码吧,,
$q->setFlags(AMQP_DURABLE); 
echo "Message Total:".$q->declare()."\n";

//绑定交换机与队列,并指定路由键
echo "Queue Bind: ".$q->bind($e_name,$k_route)."\n";

echo "MESSAGE:\n";

while(true){
    //消息者回调函数
    //处理生产者发送过来的数据
    $q->consume("processMessage");
}
function processMessage($envelope,$queue){
    $msg=$envelope->getBody();
    echo $msg."\n";
    print_r($envelope)."\n";
    //发送ack答应
    $queue->ack($envelope->getDeliveryTag());
}

生产者

<?php
//
$conn_args = array(
    'host' => '127.0.0.1',
    'port' => '5672',
    'login' => 'guest',
    'password' => 'guest',
    'vhost'=>'/'
);
$e_name = 'e_zcj'; 
$k_route = 'key_1';
$conn = new AMQPConnection($conn_args);
if (!$conn->connect()) {
    die("Cannot connect to the broker!\n");
}
$channel = new AMQPChannel($conn);
$message = "TEST MESSAGE! 郑程骏 is 天才";
$ex = new AMQPExchange($channel);
$ex->setName($e_name);

echo "Send Message:".$ex->publish($message, $k_route)."\n";
$conn->disconnect();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ实战,有多种使用场景。其一种使用场景是在用户订单和库存处理实现服务间解耦。通过使用RabbitMQ,可以将订单和库存处理的各个环节解耦,提高系统的可维护性和扩展性。使用RabbitMQ后,订单和库存处理的各个服务可以通过消息队列进行通信,降低了模块之间的直接依赖关系。这样,当其一个服务出现问题时,不会影响到其他服务的正常运行。另外,使用RabbitMQ还可以实现异步处理,提高系统的性能和响应速度。另外,在学习RabbitMQ的过程,可以通过SpringBoot整合RabbitMQ实战实际的业务场景。通过将所学的RabbitMQ知识点应用到实际的业务场景,可以加深对RabbitMQ的理解,并且学会如何解决实际的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [RabbitMQ实战教程](https://download.csdn.net/download/weixin_26735445/19551312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [rabbitmq实战篇 - 使用场景](https://blog.csdn.net/weixin_49300975/article/details/130359286)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [RabbitMQ实战视频.zip](https://download.csdn.net/download/qq_36899469/12255849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值