2011-06-28 1 views
3

IBM.XMS 2.0.0.5とMQ Client 7.0.1.5を使用しており、接続を作成し、例外リスナーを設定し、接続を開始し、メッセージ・リスナーを使用してメッセージの受信を開始しました。ネットワーク接続を無効にしたときにExceptionListenerが起動しないことを除いて、これは正常に動作します。代わりに、私は未処理のソケット例外が発生します。IBM.XMS ExceptionListenerが起動しない

私は戻ってIBMのサイト上で与えられた例に行って、エラーを再現しています

私はネットワークconnetionを無効にした場合、私は未処理のソケット例外を取得してのExceptionListenerが発射されません。

using System; 
using System.Threading; 
using IBM.XMS; 

public class Sample 
{ 
    public static void Main() 
    { 
     XMSFactoryFactory factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ); 

     IConnectionFactory connectionFactory = factoryFactory.CreateConnectionFactory(); 
     connectionFactory.SetStringProperty(XMSC.WMQ_HOST_NAME, "**********"); 
     connectionFactory.SetStringProperty(XMSC.WMQ_CHANNEL, "*****"); 
     connectionFactory.SetIntProperty(XMSC.WMQ_PORT, 1414); 
     connectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT); 
     connectionFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "*********"); 

     // 
     // Create the connection and register an exception listener 
     // 

     IConnection connection = connectionFactory.CreateConnection(); 
     connection.ExceptionListener = new ExceptionListener(OnException); 

     ISession session = connection.CreateSession(false, AcknowledgeMode.AutoAcknowledge); 
     IDestination queue = session.CreateQueue("queue://***********"); 

     // 
     // Create the consumer and register an async message listener 
     // 

     IMessageConsumer consumer = session.CreateConsumer(queue); 
     consumer.MessageListener = new MessageListener(OnMessage); 

     connection.Start(); 

     while (true) 
     { 
      Console.WriteLine("Waiting for messages...."); 
      Thread.Sleep(1000); 
     } 
    } 

    static void OnMessage(IMessage msg) 
    { 
     Console.WriteLine(msg); 
    } 

    static void OnException(Exception ex) 
    { 
     Console.WriteLine(ex); 
    } 
} 
+0

設定をもう少し詳しく説明できますか?リモートまたはローカルのキュー・マネージャーに接続していますか? – gregwhitaker

+0

リモート・キュー・マネージャーに接続しています。私はこれをWindows XPで開発しています。MQクライアント7.0.1.5とMessage Service Client for .NET 2.0.0.5を使用しています。 –

答えて

6

私は無駄な時間を誰かに救うことを期待して答えを出します。

例外リスナーを接続に接続するには、アンマネージドクライアント接続を使用する必要があります。

connectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE、XMSC.WMQ_CM_CLIENT_UNMANAGED);

0

アンマネージドモードで動作していた場合は、XMS .NET v2.0.0.5のバグです。管理モードでも動作するはずです(XMSC.WMQ_CM_CLIENT_MANAGED)。最新のフィックスパックに移動して、もう一度テストしてください。

関連する問題