每隔几分钟测试与IBM MQ服务器的连接

时间:2017-12-14 12:04:49

标签: c# ibm-mq

我们正在使用 IBM.XMS 8.0.0.5 .NET库连接到IBM MQ服务器并创建我们的侦听器。

但有时VPN隧道进入睡眠模式(例如,如果我们的某个服务器重新启动,就会发生这种情况)。为了防止这种情况,有必要通过隧道发送网络数据包来保持VPN隧道“唤醒”。

我环顾四周,但IBM MQ没有任何实现来测试与服务器的连接。我需要某种“ping”来保持隧道。但是不允许ping,我认为他们拒绝ICMP回声。

我打算创建一个异步任务,它将根据配置的间隔定期测试连接。

对此有任何建议吗?

PS 有时连接会像我上面提到的那样睡着了。在不知道任何事情的情况下,系统工程师重新启动将dispose发送到IBM服务器的服务,即使dispose消息也会导致连接被备份。当服务停止时,队列中的所有项目都开始被我们消耗了......我需要解决这个问题,但我不知道如何做到这一点。

修改

建立连接并设置消费者如下:

var factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);

// Create WMQ Connection Factory.
var cf = factoryFactory.CreateConnectionFactory();

// Set the properties
cf.SetStringProperty(XMSC.WMQ_HOST_NAME, _parameters.IbmMqHost);
cf.SetIntProperty(XMSC.WMQ_PORT, _parameters.IbmMqPort);
cf.SetStringProperty(XMSC.WMQ_CHANNEL, _parameters.IbmMqChannel);
cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, _parameters.IbmMqQueueManager);
cf.SetStringProperty(XMSC.USERID, username);
cf.SetStringProperty(XMSC.PASSWORD, pw);
cf.SetIntProperty(XMSC.WMQ_CLIENT_RECONNECT_OPTIONS, XMSC.WMQ_CLIENT_RECONNECT);

// Create connection.
connection = cf.CreateConnection();
connection.ExceptionListener = ExceptionCallback;
session = connection.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
destination = session.CreateQueue(queuename);
consumer = session.CreateConsumer(destination);
consumer.MessageListener = listener;
connection.Start();

0 个答案:

没有答案