zoukankan      html  css  js  c++  java
  • MSMQ 队列消息和死信队列

    • 日志消息

      日志队列可以保存你操作过的消息的备份。它的好处是,一但发现前面的操作失败,可以从日志队列中重新创建出原先的消息对象,然后再进行操作。

      例如,向远方发送一个消息对象,然后对方返回一个失败的确认。我们可以从失败确认消息中提取出一个和开始发送的消息相关的ID值,然后根据提出的ID值从日志队列中找到发送的消息,

    重新创建一个消息对象,并再次发送。在.net中,我们使用 ReceiveByCorrelationID 或 PeekByCorrelationID 方法根据 CorrelationD 值取得消息对象。
      在一台机器上,都会有一个全局消息队列,它保存任何从该机器发出的消息,而不论消息发送是否成功。每个消息队列也可以有自己的消息日志队列。

    日志队列的使用有两种方式

      一种是对消息队列对象设置 UseJournalQueue 属性,它表示对该队列收到的所有消息使用日志记录方式,而对于发出的消息不做任何记录;

      另一种方法是对消息对象设置 UseJournalQueue 属性,所有被发送的消息将被记录到系统日志队列中去。

    消息日志队列有一个最大容量,称作quota,一旦日志队列存储容量到达该值后,以后到来的本应存储的的消息将不再被存储,同时不会发出任何的出错信息。

    所以作为管理人员,应该定期清理日志队列,以防止上述现象的发生。消息队列只是被动的接收端,它们不可能返回确认消息,或者发送删除的消息到死信队列中,或者是进行超时处理。
    例子:
    设置消息队列对象的 UseJournalQueue 属性,以记录收到的消息到日志队列中
     MyMessageQueue.UseJournalQueue=True 

    设置消息对象的 UseJournalQueue 属性,以记录收到的消息到系统日志队列中
      MyMessage.UseJournalQueue=True 

    • 死信队列

  • 相关阅读:
    《深入理解C#》泛型高级
    vs2019 插件下载慢的解决方法
    C# Tuple和 ValueTuple
    前端ajax用json方式请求 后端php 用 $GLOBALS['HTTP_RAW_POST_DATA'] 取值
    Vue之Axios跨域问题解决方案
    Jquery自定义方法获取URL后面参数
    C# List 某行数据置顶
    EF空字段使用contains查询的解决办法
    sql语句查询,多字段like模糊查询优化
    Asp.Net Core中间件
  • 原文地址:https://www.cnblogs.com/wwj1992/p/10561799.html
Copyright © 2011-2022 走看看