2016-09-04 43 views
0

アスタリスク(*)構文を使用してレポートであるすべてのトピックを購読する方法はありますか?例えばIBM MQ XMS - C#で複数のトピックを購読する

p.s "のMyData \のversion1.0 \は\(*)をレポート":私はXMSを使用しています。

class MyXmsApp 
{ 
    static void Main(string[] args) 
    { 
     MyXmsApp app = new MyXmsApp(); 
     app.Setup(); 
     Console.ReadLine(); 
    } 

    public void Setup() 
    { 
     XMSFactoryFactory xff = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ); 
     IConnectionFactory cf = xff.CreateConnectionFactory(); 
     cf.SetStringProperty(XMSC.WMQ_HOST_NAME, "localhost"); 
     cf.SetIntProperty(XMSC.WMQ_PORT, 1414); 
     cf.SetStringProperty(XMSC.WMQ_CHANNEL, "CLIENT"); 
     cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT); 
     cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "QM_LOCAL"); 
     cf.SetIntProperty(XMSC.WMQ_BROKER_VERSION, XMSC.WMQ_BROKER_V1); 

     IConnection conn = cf.CreateConnection(); 
     Console.WriteLine("connection created"); 
     ISession sess = conn.CreateSession(false, AcknowledgeMode.AutoAcknowledge); 
     IDestination dest = sess.CreateQueue("queue://q"); 
     IMessageConsumer consumer = sess.CreateConsumer(dest); 
     MessageListener ml = new MessageListener(OnMessage); 
     consumer.MessageListener = ml; 
     conn.Start(); 
     Console.WriteLine("Consumer started"); 
    } 

    private void OnMessage(IMessage msg) 
    { 
     ITextMessage textMsg = (ITextMessage)msg; 
     Console.Write("Got a message: "); 
     Console.WriteLine(textMsg.Text); 
    } 
} 

答えて

1

MQ pub/subで使用するワイルドカード文字は「#」です。あなたの例では、トピックの文字列をサブスクライブ:

のMyData/version1.0 /レポート/#

購読でしょうに:

のMyData/version1.0 /レポート/¥日報
のMyData/version1.0 /レポート/ WeeklyReport
のMyData/version1.0 /レポート/ MonthlyReport

ここ

詳細情報: https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.pla.doc/q005010_.htm

関連する問題