Вам понадобится как минимум MQ Redistributable Client и менеджер очередей, работающий где-нибудь для запуска приложения.
Вот пример, который делает то, что вы ищете.
void GetMessagesFromSub()
{
MQQueueManager queueManager;
MQTopic topic;
Hashtable properties;
MQMessage message;
try
{
// mq properties
properties = new Hashtable();
properties.Add(MQC.HOST_NAME_PROPERTY, "localhost");
properties.Add(MQC.PORT_PROPERTY, 1414);
properties.Add(MQC.CHANNEL_PROPERTY, "SVRCON_CHN");
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
properties.Add(MQC.USER_ID_PROPERTY, "myuserid");
properties.Add(MQC.PASSWORD_PROPERTY, "mylongpassw0rdisthis");
// create connection
Console.Write("Connecting to queue manager.. ");
queueManager = new MQQueueManager("MFTQM", properties);
// Subscribe to topic - non durable subscription
String subTopicString = "/SPORTS/FOOTBALL/#";
Console.Write("Subscribing to topic " + subTopicString);
topic = queueManager.AccessTopic(subTopicString, null, MQC.MQTOPIC_OPEN_AS_SUBSCRIPTION, MQC.MQSO_CREATE | MQC.MQSO_FAIL_IF_QUIESCING);
// This one creates durable subscription
//topic = queueManager.AccessTopic(topicName, null, MQC.MQSO_CREATE | MQC.MQSO_FAIL_IF_QUIESCING | MQC.MQSO_DURABLE | MQC.MQSO_RESUME, null, "DurableSubscriptionName");
// creating a message object
message = new MQMessage();
MQGetMessageOptions mqgmo = new MQGetMessageOptions();
mqgmo.WaitInterval = 30000;
mqgmo.Options |= MQC.MQGMO_WAIT;
try
{
topic.Get(message, mqgmo);
Console.WriteLine("Message " + message.ReadString(message.MessageLength));
message.ClearMessage();
}
catch (MQException mqe)
{
if (mqe.ReasonCode == 2033)
{
Console.WriteLine("Timeout : No message available");
}
else
{
Console.WriteLine("MQException caught: {0} - {1}", mqe.ReasonCode, mqe.Message);
}
}
// closing topic
topic.Close();
// disconnecting queue manager
queueManager.Disconnect();
}
catch (MQException mqe)
{
Console.WriteLine("MQException caught: {0} - {1}", mqe.ReasonCode, mqe.Message);
Console.WriteLine(mqe.StackTrace);
}
}