php接收mq,php的mq客户端获取队列方法改造

获取mq中消息然后处理失败重试机制:

下面的代码是php连接mq客户端的获取queue队列中的消息代码:

public function createDurableSubscriber($queue,$callback){

$f = $this->con->subscribe($queue);

while(1){

$msg = $this->con->readFrame();

if ($msg!=null) {

echo "Received message with body '$msg->body'\n";

$result = call_user_func($callback,$msg);

//底层方法接口改造

//在调用接口的场景下,需要在调用接口成功之后,才告知已消费消息(调用ack方法);

//如果调用接口失败之后,需要保留消息并重试,直到调用接口成功,消费掉消息

//如果接口调用失败,仍然要告知已消费消息(调用ack方法),在其他地方进行重试判断

$this->con->ack($msg);

}

}

unset($this->con);

}

每次推送msg到queue时,需要额外推送一个标记retry_count。初始值为0。

从queue获取msg处理失败之后(调用接口失败),需要重新推送msg到queue,并且额外标记retry_count加1,这时retry_count=1;

以此类推,每次retry_count都加1。重试10次,直到retry_count=10,如果处理失败,就不重试,但是发送rtx提醒给相关负责人。

这里用到递归的概念。

Python/dotNET Redis服务连接客户端调用SET方法的同时获取Redis服务器返回的内容

在用Python或dotNET redis客户端连接redis服务器的时候,当你调用客户端的SET方法后同时还想得到其返回的字符串,那么需要处理一下. 1. Redis Python redis客户端 ...

Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie

Cookie是指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密),比如说有些网站需要登录才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我 ...

[转]Android 如何根据网络地址获取网络图片方法

http://blog.csdn.net/xiazdong/article/details/7724103 目录(?)[-] h2pre namecode classhtml stylefont-we ...

JAVA文件中获取路径及WEB应用程序获取路径方法

JAVA文件中获取路径及WEB应用程序获取路径方法 1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了tes ...

基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据

这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...

tcp程序设计--客户端获取服务器输入输出流

tcp程序设计--客户端获取服务器输入输出流 思路: 第一步:实例化一个ServerSocket对象(服务器套接字),用来等待网络上的请求(也就是等待来连接的套接字) 第二步:调用accept()方法 ...

WCF客户端获取服务端异常[自定义异常]

引言 经过不断的摸索,询问/调试,终于学会了关于WCF客户端与服务端之间异常的处理机制,在此来记录自己的成果,用于记录与分享给需要的伙伴们. 首先感谢[.NET技术群]里群主[轩]的大力帮助,如有需要 ...

RabbitMQ获取队列的消息数目

使用RabbitMQ,业务需求,想要知道队列中还有多少待消费待数据. 方式一: @Value("${spring.rabbitmq.host}") private String h ...

使用rabbitmq手动确认消息的,定时获取队列消息实现

描述问题 最近项目中因为有些数据,需要推送到第三方系统中,因为数据会一直增加,并且需要与第三方系统做相关交互. 相关业务 本着不影响线上运行效率的思想,我们将增加的消息放入rabbitmq,使用另一个 ...

随机推荐

matlab微分方程dsolve使用

y=dsolve('Dy=exp(-x-y-2)','y(0)=-2','x') dy/dx 写成Dy (注意大小写) y(0)=-2 表示初始条件 'x'表示积分变量

畅通工程续--hdu1874

畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

重写系统中的UINavigationController 返回按钮的事件

.扩展UIviewController UIViewController+BackButtonHandler.h #import @protocol Bac ...

分布式缓存HttpRuntime.cache应用到单点登陆中_优化登陆

以前的设计方案,是我们在数据库中放一个表,用作存储验证登陆成功的用户,并且生成用户TOKEN(令牌) 分布式缓存+集群的解决方案图: 相应的代码: DE层中配置文件: receiveTimeout=& ...

.net 异步编程async & await关键字的思考

C# 5.0引入了两个关键字 async和await,这两个关键字在很大程度上帮助我们简化了异步编程的实现代码,而且TPL中的task与async和await有很大的关系 思考了一下异步编程中的asy ...

html的<h>标签

标签:标题标签. 标签只有六个:

........

Zookeeper连接eclipse

package com.bw.ZK; import java.io.IOException; import org.apache.zookeeper.CreateMode; import org.ap ...

ML: 降维算法-概述

机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达, y是数据点映射后的低维向量 ...

多线程系列(2)线程池ThreadPool

上一篇文章我们总结了多线程最基础的知识点Thread,我们知道了如何开启一个新的异步线程去做一些事情.可是当我们要开启很多线程的时候,如果仍然使用Thread我们需要去管理每一个线程的启动,挂起和终止 ...

分享到微信、微博、QQ空间、QQ微博

一:分享到微信 //分享到微信$("#weixin").bind("click", function () {    var p = {        url: ...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值