gpt4 book ai didi

c# - 大约 30 秒后 ActiveMq NMS 断开连接

转载 作者:行者123 更新时间:2023-11-30 15:11:43 27 4
gpt4 key购买 nike

正在尝试使用 ActiveMq 进行简单的发布/订阅。我可以让它一切正常,但订户在大约 30 秒后断开连接。我一直在寻找可以更改的超时类型的值,但似乎没有任何效果。这是订阅者:

using System;
using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.ActiveMQ.Commands;

namespace ActiveMQCatcher
{
internal class Program
{
private static void Main(string[] args)
{
IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616/");

using (IConnection connection = factory.CreateConnection())
{
connection.ClientId = "MYID";
connection.Start();

using (ISession session = connection.CreateSession())
{
IMessageConsumer consumer = session.CreateConsumer(new ActiveMQTopic("MYTOPIC"), null, false);
consumer.Listener += consumer_Listener;

Console.ReadLine();
}

connection.Stop();
}
}

private static void consumer_Listener(IMessage message)
{
Console.WriteLine("Got: " + ((ITextMessage) message).Text);
}
}
}

我试过这个:

connection.RequestTimeout = TimeSpan.MaxValue;

但似乎并没有改变什么。

要解决问题,只需运行程序并等待大约 30 秒。您可以在 ActiveMQ 控制台中看到连接消失(默认为 http://localhost:8161/admin/connections.jsp)

有什么想法吗?

最佳答案

当然,我在发布问题后几分钟就弄明白了。以下是其他人的答案:

问题是 NMS 使用的是 OpenWire,默认情况下 OpenWire 有 30 秒的超时时间。您可以在\conf\ActiveMq.xml 文件中更改它。以下是您需要更改的内容:

<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?wireFormat.maxInactivityDuration=0"/>
</transportConnectors>

wireFormat.maxInactivityDuration 参数是关键。

关于c# - 大约 30 秒后 ActiveMq NMS 断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2073255/

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