Wenn ein .net Windows-Dienst mit der Websphere MQ-Warteschlange für die Subskription verbunden ist und Nachrichten weiterliest, wie können wir mit Problemen wie der Netzwerktrennung umgehen oder etwas Falsches passiert ist, können wir uns ständig auf die Eigenschaft MQQueueManager.IsConnected
verlassen? Dieser Artikel ist verwirrend ich: IC75673: MQQueueManager.IsConnected property is "true" after the connection is broken in a .NET application.Wie behandelt man Verbindungsfehler für die Subskription in WebSphere Queue?
Unten ist der Code Ich habe Nachrichten aus der Warteschlange zu lesen und ich bin mit MQ Version 8,0
private MQQueueManager _queueManager;
private MQQueue _queue;
private MQTopic _topic;
public bool isSubscribed = false;
public void Subscribe()
{
var queueManagerName = "myQueueManager";
var properties = new Hashtable();
//Set all the properties here
_queueManager = new MQQueueManager(queueManagerName, properties);
//Conect to Queue
_queue = _queueManager.AccessQueue("devQueue", MQC.MQOO_INPUT_AS_Q_DEF);
isSubscribed = true;
while (isSubscribed)
{
if (cancellationToken.IsCancellationRequested)
{
isSubscribed = false;
cancellationToken.ThrowIfCancellationRequested();
}
try
{
Receive(onMessageReceived);
}
catch (Exception ex)
{
Console.WriteLine("Exception: {0}", ex);
}
}
}
public override void Receive<T>(Action<T> onMessageReceived)
{
try
{
var dataReceived = new MQMessage();
_queue.Get(dataReceived);
T message;
message = (T)(object)dataReceived;
onMessageReceived(message);
_queueManager.Commit();
}
catch (Exception ex)
{
throw ex;
}
}