美文网首页
mq具体过程

mq具体过程

作者: 9527Roy | 来源:发表于2018-06-01 10:22 被阅读0次

创建连接和channel->创建交换机->创建队列->绑定交换机与队列,并指定路由键->阻塞模式接收消息->回调函数(处理消息)

$conn_args = array(

    'host' => 'xxx', 

    'port' => '5672', 

    'login' => 'guest', 

    'password' => 'guest', 

    'vhost'=>'/' 

);   

$e_name = 'e_linvo'; //交换机名 

$q_name = 'q_linvo'; //队列名 

$k_route = 'key_1'; //路由key 

//创建连接和channel 

$conn = new AMQPConnection($conn_args);   

if (!$conn->connect()) {   

    die("Cannot connect to the broker!\n");   

}   

$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($q_name);   

$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');   

    //$q->consume('processMessage', AMQP_AUTOACK); //自动ACK应答 

$conn->disconnect();   

/**

* 消费回调函数

* 处理消息

*/ 

function processMessage($envelope, $queue) { 

    $msg = $envelope->getBody(); 

    echo $msg."\n"; //处理消息 

    $queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答 

}

e_name = 'e_linvo'; //交换机名

//$q_name = 'q_linvo'; //无需队列名 

$k_route = 'key_1'; //路由key 

//创建连接和channel 

$conn = new AMQPConnection($conn_args);   

if (!$conn->connect()) {   

    die("Cannot connect to the broker!\n");   

}   

$channel = new AMQPChannel($conn);   

//消息内容 

$message = "TEST MESSAGE! 测试消息!";   

//创建交换机对象   

$ex = new AMQPExchange($channel);   

$ex->setName($e_name);   

//发送消息 

//$channel->startTransaction(); //开始事务 

for($i=0; $i<5; ++$i){ 

    echo "Send Message:".$ex->publish($message, $k_route)."\n"; 

//$channel->commitTransaction(); //提交事务 

$conn->disconnect();

相关文章

  • mq具体过程

    创建连接和channel->创建交换机->创建队列->绑定交换机与队列,并指定路由键->阻塞模式接收消息->回调函...

  • MQ消息可靠性保证----以RabbitMQ为例

    MQ的整个过程中有三处可能产生消息的丢失 生产者到MQ的链路 MQ自身宕机 MQ到消费端的链路 生产者到MQ的消息...

  • MQ应用示例

    MQ应用示例 为了更加直观的展示MQ的应用场景,这里我们就用一个常见的电商系统中的几个业务,来具体说明下MQ在实际...

  • RabbitMQ笔记

    一、MQ的基本概念 1 .1MQ概述 MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消...

  • MQ简介

    MQ简介(消息队列 MQ,Message queue,消息队列,就是指保存消息的一个容器。具体的定义这里就不类似于...

  • rocketmq-4.4.0从零单排(3.架构拆解)

    1、rocketmq模块划分 2、rocketmq模块具体含义 ack : mq的确认机制实现 broker : ...

  • MQ夺命连环11问

    一、你们为什么使用mq?具体的使用场景是什么? mq的作用很简单,削峰填谷。以电商交易下单的场景来说,正向交易的过...

  • RabbitMQ全套教程

    1.1 MQ概述MQ全称Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系...

  • RockMq事务消息原理

    场景: 通过mq 进行分布式事务的一致性控制,参考转账事务原理 目的: 保持本地事务和mq发送的原子性 过程: ...

  • 我说MQ可用于RPC,面试官让我回去等通知

    面试官问我mq可以做什么?我说RPC服务。面试官一脸疑问&&嫌弃,让我回去等通知。 MQ与RPC RPC(远程过程...

网友评论

      本文标题:mq具体过程

      本文链接:https://www.haomeiwen.com/subject/ctuhsftx.html