在创建新的“事务”队列时,我首先需要查找是否存在任何具有相同名称的“非事务性”MessageQueue
。如果有,我需要将消息从旧队列复制到新的事务队列。
要实现这一点(当我找到具有相同名称的旧队列时): 1.我正在创建一个临时队列(我发现默认情况下创建为Transactional)。 我正在循环来自旧队列的消息并将它们发送到新队列。 3.删除旧队列 4.创建新的事务队列。 5.循环来自临时事务队列的消息并将它们发送到新队列。 6.删除临时队列
消息从旧队列发送到新队列,没有任何异常。但是,当我尝试将消息正文作为message.Body
阅读时Body ='message.Body'扔了一个 类型例外 'System.InvalidOperationException' 无法反序列化传递的消息 作为一个论点。无法识别 序列化格式
我如何实现上述要求以及我的方法会出现什么问题?
我对MSMQ很新。 (使用Windows XP,Visual Studio 2008,.NET 2.0)
答案 0 :(得分:2)
您不是“循环来自旧队列的消息并将其发送到新队列”。 而是使用旧消息中的数据创建新消息。
因此,如果你从一个“好”的消息开始,那并不意味着你最终会得到同样的结果。 重要的信息是:
我期望消息没有以相同的方式重新创建,或者接收过程没有以正确的方式读取它们。也就是说,您使用了哪种消息格式化程序?例如,ActiveX?
干杯
John Breakwell