我正在尝试对队列中的所有消息在并行 foreach 循环中运行,但出现此错误:
错误:接收消息时未检索到属性正文。确保 PropertyFilter 设置正确。
当我使用 foreach(没有并行)执行相同的循环时,一切正常。
知道我应该怎么做才能解决这个问题吗?
我正在尝试对队列中的所有消息在并行 foreach 循环中运行,但出现此错误:
错误:接收消息时未检索到属性正文。确保 PropertyFilter 设置正确。
当我使用 foreach(没有并行)执行相同的循环时,一切正常。
知道我应该怎么做才能解决这个问题吗?
根据msdn,看起来您使用的不是线程安全方法
只有 GetAllMessages 方法是线程安全的
Peek()
和Receive()
(及其变体)不是线程安全的。你需要想出一个阻塞机制来避免碰撞。
并行处理不适用于从队列中取出消息,因为它是顺序的并且(如果已配置)是事务性的。
如果您删除 A 和 B,并且对 A 的处理失败,它将返回到队列中 - 但 B 也已被删除?
GetAllMessages()
将返回所有这些,但不会删除它们。您需要
Receive()
单独使用每条消息以将其完全从队列中删除。