MSMQ 队列消息和死信队列
日志消息
日志队列可以保存你操作过的消息的备份。它的好处是,一但发现前面的操作失败,可以从日志队列中重新创建出原先的消息对象,然后再进行操作。
例如,向远方发送一个消息对象,然后对方返回一个失败的确认。我们可以从失败确认消息中提取出一个和开始发送的消息相关的ID值,然后根据提出的ID值从日志队列中找到发送的消息,
重新创建一个消息对象,并再次发送。在.net中,我们使用 ReceiveByCorrelationID 或 PeekByCorrelationID 方法根据 CorrelationD 值取得消息对象。
在一台机器上,都会有一个全局消息队列,它保存任何从该机器发出的消息,而不论消息发送是否成功。每个消息队列也可以有自己的消息日志队列。
日志队列的使用有两种方式:
一种是对消息队列对象设置 UseJournalQueue 属性,它表示对该队列收到的所有消息使用日志记录方式,而对于发出的消息不做任何记录;
另一种方法是对消息对象设置 UseJournalQueue 属性,所有被发送的消息将被记录到系统日志队列中去。
消息日志队列有一个最大容量,称作quota,一旦日志队列存储容量到达该值后,以后到来的本应存储的的消息将不再被存储,同时不会发出任何的出错信息。
所以作为管理人员,应该定期清理日志队列,以防止上述现象的发生。消息队列只是被动的接收端,它们不可能返回确认消息,或者发送删除的消息到死信队列中,或者是进行超时处理。
例子:
设置消息队列对象的 UseJournalQueue 属性,以记录收到的消息到日志队列中
MyMessageQueue.UseJournalQueue=True
设置消息对象的 UseJournalQueue 属性,以记录收到的消息到系统日志队列中
MyMessage.UseJournalQueue=True
死信队列
MSMQ 队列消息和死信队列的更多相关文章
- RabbitMQ延迟消息:死信队列 | 延迟插件 | 二合一用法+踩坑手记+最佳使用心得
前言 前段时间写过一篇: # RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得 很多人加了我好友,说很喜欢这篇文章,也问了我一些问题. 因为最近工作比较忙, ...
- RocketMQ之八:重试队列,死信队列,消息轨迹
问题思考 死信队列的应用场景? 死信队列中的数据是如何产生的? 如何查看死信队列中的数据? 死信队列的读写权限? 死信队列如何消费? 重试队列和死信队列的配置 消息轨迹 1.应用场景 一般应用在当正常 ...
- 消息队列RabbitMQ(五):死信队列与延迟队列
死信队列 引言 死信队列,英文缩写:DLX .Dead Letter Exchange(死信交换机),其实应该叫做死信交换机才更恰当. 当消息成为Dead message后,可以被重新发送到另一个交换 ...
- RabbitMQ使用 prefetch_count优化队列的消费,使用死信队列和延迟队列实现消息的定时重试,golang版本
RabbitMQ 的优化 channel prefetch Count 死信队列 什么是死信队列 使用场景 代码实现 延迟队列 什么是延迟队列 使用场景 实现延迟队列的方式 Queue TTL Mes ...
- RabbitMQ死信队列另类用法之复合死信
前言 在业务开发过程中,我们常常需要做一些定时任务,这些任务一般用来做监控或者清理任务,比如在订单的业务场景中,用户在创建订单后一段时间内,没有完成支付,系统将自动取消该订单,并将库存返回到商品中,又 ...
- ActiveMQ队列消息过期时间设置和自动清除解决方案
版本 apache-activemq-5.15.3 1.消息过期设置 参数详情 1)message过期则客户端不能接收 2)ttlCeiling:表示过期时间上限(程序写的过期时间不能超过此时间,超过 ...
- Rabbitmq消费失败死信队列
Rabbitmq 重消费处理 一 处理流程图: 业务交换机:正常接收发送者,发送过来的消息,交换机类型topic AE交换机: 当业务交换机无法根据指定的routingkey去路由到队列的时候,会全部 ...
- RabbitMQ死信队列
关于RabbitMQ死信队列 死信队列 听上去像 消息“死”了 其实也有点这个意思,死信队列 是 当消息在一个队列 因为下列原因: 消息被拒绝(basic.reject/ basic.nac ...
- RabbitMQ 消费端限流、TTL、死信队列
目录 消费端限流 1. 为什么要对消费端限流 2.限流的 api 讲解 3.如何对消费端进行限流 TTL 1.消息的 TTL 2.队列的 TTL 死信队列 实现死信队列步骤 总结 消费端限流 1. 为 ...
随机推荐
- PTA——数组平移
PTA 7-52 数组元素循环右移问题 #include <stdio.h> int main(){ ]; int n,m,t,c; scanf("%d%d",& ...
- django登录逻辑
django-restframework中已经实现了登录逻辑,只需要安装配置就可以使用 pip install djangorestframework-jwt REST_FRAMEWORK = { ' ...
- sqlite 使用 cte 及 递归的实现示例
1.多级 cte 查询示例. with cte as ( select pageid from cm_bookpage ) , cte2 as ( as content from cte ) sele ...
- Spring MVC的原理及配置详解
网址链接:https://www.cnblogs.com/baiduligang/p/4247164.html
- 快速简单搭建wordpress平台
公司一直没有文档平台,于是想弄一个,弄过github平台的,但是都没用上,虽然这个搭建出来也没用上,还是花了时间才弄出来的,也许下次有用的时候,可以拿来就用 安装Wordpress的基础环境要 ...
- 原生JS实现选中的radio变为未选中
需求如下,radio已经选中,再点击,取消选中状态. 效果如链接:演示地址 直接上代码: <!DOCTYPE html> <html> <head> <met ...
- GitHub Pages:静态站点托管服务(待补充)
不管是 react 还是 vue 项目路由都必须使用 hash 方式,否则页面打不开,切记!!! 如果使用的是 vue-cli 3 创建项目,那么你要在根目录创建 vue.config.js 文件,并 ...
- 关于library cache lock和row cache lock产生的常见原因
这两个等待事件其实很少出现在top5列表中,一般都没什么印象,在此整理记录以便以后查阅. 常见的library cache lock产生的原因在<高级OWI与Oracle性能调查>这本书和 ...
- C语言的抽象与函数指针--思想(转)
一.何为抽象? 从小到大,我们接触到的抽象,最熟悉的莫过于数学了.为什么这样说呢? 比如说,在小学的时候,老师总是拿了几个苹果来引诱我们:同学们,这里有几个苹果啊?于是我们流着口水一个个地数,一个苹果 ...
- 代码漏洞扫描描述Cross Site History Manipulation解决办法[dongcoder.com]
代码漏洞扫描 漏洞描述:Cross Site History Manipulation 简要描述:产品的行为差异或发送不同的反应,在某种程度上暴露了与安全性相关的产品状态,例如特定的操作是否成功.可能 ...