我正在尝试在队列中的所有消息上运行并行foreach循环,但是我收到此错误:
错误:收到邮件时未检索到Property Body。确保正确设置了PropertyFilter。
当我使用foreach(没有并行)执行相同的循环时,一切正常。
知道我该怎么做才能解决这个问题?
答案 0 :(得分:5)
根据msdn
,看起来您使用的不是线程安全方法只有GetAllMessages方法是线程安全的
答案 1 :(得分:2)
Peek()
和Receive()
(及其变体)不线程安全。您需要提出阻止机制以避免冲突。
答案 2 :(得分:1)
并行处理不能用于将消息从队列中取出,因为它是顺序的(如果已配置)事务性的。
如果删除A和B,并且A的处理失败,它将返回队列 - 但是B也被删除了?
GetAllMessages()
将返回所有这些内容,但不会删除它们。你需要使用
Receive()
分别为每条消息将其从队列中完全删除。