生活就是点点滴滴

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

背景:

MQClient 对接MQServer  服务器都是server2003,只开通了1314端口进行访问。对方IT说没有开通pin功能,但是可以对联。

 

开始报2035 没有权限的异常。发现对方MCA标示没有设置,并且对方不愿意修改,说是成型的系统,有很多人在用。

 

最后头疼了好长时间,在一位前和他们对接过系统的公司的人那里找到了解决方法,在系统中创建一个对方指定的用户。

 

用此用户登录。(为此用户设置mqm权限)

 

不知道是否MQ服务器安装的时候都应该指定MCA用户标示,是否不设定的情况下更好的理由?

 

另从IBM扒的代码参数传递的时候用hashtable的方法传参数,看起来不错,记下来。

 

 

代码
// ===========================================================================
// Licensed Materials - Property of IBM
// 5724-H72
// (c) Copyright IBM Corp. 2003, 2005
// ===========================================================================
using System;
using System.Collections;

using IBM.WMQ;

class MQSample
{
    
// The type of connection to use, this can be:-
    
// MQC.TRANSPORT_MQSERIES_BINDINGS for a server connection.
    
// MQC.TRANSPORT_MQSERIES_CLIENT for a non-XA client connection
    
// MQC.TRANSPORT_MQSERIES_XACLIENT for an XA client connection
    
// MQC.TRANSPORT_MQSERIES_MANAGED for a managed client connection
    const String connectionType = MQC.TRANSPORT_MQSERIES_CLIENT;

    
// Define the name of the queue manager to use (applies to all connections)
    const String qManager = "QM_ORANGE";

    
// Define the name of your host connection (applies to client connections only)
    const String hostName = "172.16.1.76(5678)";

    
// Define the name of the channel to use (applies to client connections only)
    const String channel = "CLIENT.QM_ORANGE";



    
/// <summary>
    
/// Initialise the connection properties for the connection type requested
    
/// </summary>
    
/// <param name="connectionType">One of the MQC.TRANSPORT_MQSERIES_ values</param>
    static Hashtable init(String connectionType)
    {
        Hashtable connectionProperties 
= new Hashtable();

        
// Add the connection type
        connectionProperties.Add(MQC.TRANSPORT_PROPERTY, connectionType);

        
// Set up the rest of the connection properties, based on the
        
// connection type requested
        switch (connectionType)
        {
            
case MQC.TRANSPORT_MQSERIES_BINDINGS:
                
break;
            
case MQC.TRANSPORT_MQSERIES_CLIENT:
            
//case MQC.TRANSPORT_MQSERIES_XACLIENT:
            
//case MQC.TRANSPORT_MQSERIES_MANAGED:
                connectionProperties.Add(MQC.HOST_NAME_PROPERTY, hostName);
                connectionProperties.Add(MQC.CHANNEL_PROPERTY, channel);
                connectionProperties.Add(MQC.USER_ID_PROPERTY, userid);
                connectionProperties.Add(MQC.CCSID_PROPERTY, ccsid);
                connectionProperties.Add(MQC.PASSWORD_PROPERTY , password);
                
break;
        }

        
return connectionProperties;
    }
    
/// <summary>
    
/// The main entry point for the application.
    
/// </summary>
    [STAThread]
    
static int Main(string[] args)
    {
        
try
        {
            Hashtable connectionProperties 
= init(connectionType);

            
// Create a connection to the queue manager using the connection
            
// properties just defined
            MQQueueManager qMgr = new MQQueueManager(qManager, connectionProperties);

            
// Set up the options on the queue we wish to open
            int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;

            
// Now specify the queue that we wish to open,and the open options
            MQQueue system_default_local_queue =
              qMgr.AccessQueue(
"SYSTEM.DEFAULT.LOCAL.QUEUE", openOptions);

            
// Define a WebSphere MQ message, writing some text in UTF format
            MQMessage hello_world = new MQMessage();
            hello_world.WriteUTF(
"Hello World!");

            
// Specify the message options
            MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the defaults,
            
// same as MQPMO_DEFAULT

            
// Put the message on the queue
            system_default_local_queue.Put(hello_world, pmo);



            
// Get the message back again

            
// First define a WebSphere MQ message buffer to receive the message
            MQMessage retrievedMessage = new MQMessage();
            retrievedMessage.MessageId 
= hello_world.MessageId;

            
// Set the get message options
            MQGetMessageOptions gmo = new MQGetMessageOptions(); //accept the defaults
            
//same as MQGMO_DEFAULT

            
// Get the message off the queue
            system_default_local_queue.Get(retrievedMessage, gmo);

            
// Prove we have the message by displaying the UTF message text
            String msgText = retrievedMessage.ReadUTF();
            Console.WriteLine(
"The message is: {0}", msgText);

            
// Close the queue
            system_default_local_queue.Close();

            
// Disconnect from the queue manager
            qMgr.Disconnect();
        }

        
//If an error has occurred in the above,try to identify what went wrong.

        
//Was it a WebSphere MQ error?
        catch (MQException ex)
        {
            Console.WriteLine(
"A WebSphere MQ error occurred: {0}", ex.ToString());
        }

        
catch (System.Exception ex)
        {
            Console.WriteLine(
"A System error occurred: {0}", ex.ToString());
        }

        
return 0;
    }
//end of start
}//end of sample

 

 

posted on 2010-08-20 15:37  生活就是点点滴滴  阅读(1459)  评论(0编辑  收藏  举报