如果队列已满,MessageQueue 是否会阻止发送

Does a MessageQueue block on a send if the queue is full

我一直在查看有关消息队列的文档,但似乎找不到我要查找的信息。我想要完成的是在调用时记录 MySQL 数据库过程的名称,以便跟踪调用每个过程的频率。我的想法是在调用时将名称记录到 MessageQueue 中,并让服务处理队列以定期对调用进行计数。这是为了避免为每个过程调用向数据库写入额外的记录。由于这不是一个关键功能,如果队列已满,我希望能够跳过日志记录。我正在寻找以下信息:

此外,如果我在这里忽略了更简单的解决方案,请告诉我。

不,队列已满不会阻塞。

  • 发送到一个完整的本地队列将return一个异常。
  • 发送到已满的远程队列将丢弃消息,或视情况将其移动到死信队列。

MSMQ Express 消息仅驻留在内存中。当系统处于内存压力下时,它们可能会写入磁盘,但它们不会持久存在 - 重新启动会丢失它们。