gpt4 book ai didi

msmq - msmq 是否确保事务队列上的数据完整性?

转载 作者:行者123 更新时间:2023-12-02 02:16:13 27 4
gpt4 key购买 nike

我正在使用 MSMQ 传输一个 byte 数组。

格式化程序是一个 BinaryMessageFormatter

目标队列是私有(private)队列,我正在使用直接 TCP 通信。

目标机器在不同的局域网中,我通过它的外部IP地址访问它。

有一个防火墙将传入的 TCP 通信路由到实际的目标机器(端口转发)。

所以系统的架构是这样的:

[source machine] --> [destination firewall] --> [destination machine]

I've been using the system for a few months, and all went fine.

Recently we experienced a firewall failure.

Apparently, this caused to data corruption:

While the queue is transactional, and the message, according to MSMQ, was successfully delivered to the destination machine, the message's content was corrupted.

That is, the code for reading the message from the queue raised an exception:

try
{
var message = queue.Receive(readTimeout, transaction);
if (message != null)
{
data = (byte[]) message.Body; // this line raises an exception
return true;
}
}
catch (Exception e)
{
Logger.Error("error reading queue", e);
}

我不得不从队列(顶部)删除几条消息,然后系统恢复正常。

我的问题:

假设这只是防火墙的故障导致的,并且知道它是一个事务队列,为什么消息被认为已送达?
MSMQ 不是在执行某种校验和来确保事务队列上的数据完整性吗?

最佳答案

就数据完整性和完整性而言,目前看来 MSMQ 完全“信任”TCP 层。

关于msmq - msmq 是否确保事务队列上的数据完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10399626/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com