基于IBM MQ的.net开发遇到的头疼问题

背景:

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

 

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

 

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

 

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

 

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

 

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

 

 

ExpandedBlockStart.gif 代码
//  ===========================================================================
//  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 生活就是点点滴滴 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/BuildLife/archive/2010/08/20/1804648.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值