我需要允许使用 System.Net.Sockets.Socket 连接到 FTP 服务器需要很长时间 - 至少 30 秒,但可能更长。此代码始终返回有信号但在 20 秒后未连接,这显然是内部默认值:
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IAsyncResult result = socket.BeginConnect("128.0.0.1", 99, null, null);
bool signalled = result.AsyncWaitHandle.WaitOne(60000, true);
Run Code Online (Sandbox Code Playgroud) 我对 MQ 不熟悉,所以如果我没有正确解释自己,请原谅我。我们在队列中收到一条消息,该消息在读取时失败并显示 2110 MQRC_FORMAT_ERROR。问题似乎是它没有指定“格式”,例如我们期待“MQSTR”。客户端代码 (C#) 正在捕获 MQException 并执行 MQQueueManager.Backout() 但是消息只是返回队列并被客户端再次读取和拒绝。
查看队列,我看到它没有设置退出队列或退出阈值。队列管理器也没有死信队列集。因此,我所做的是设置 DLQ 并将队列的回退队列设置为回退阈值为 5。但是,消息仍然停留在不断读取和放回的队列中。该消息的回退计数目前已接近 2000 万。
我想让退出和 DLQ 工作,但如果有另一种方法可以手动删除或移动此消息,这将有助于现在。这只是一个测试信息,所以我们丢失它也没有关系。
编辑:我不得不清除队列才能让事情发生变化,所以不幸的是,在它再次发生之前可能无法测试任何解决方案。