在VB6中添加服务器详细信息以连接到IBM Websphere MQ系列

在VB6中添加服务器详细信息以连接到IBM Websphere MQ系列,vb6,ibm-mq,Vb6,Ibm Mq,我们正在将IBM Websphere MQ移动到不同的服务器VB6应用程序将位于不同的服务器中。 我需要填充“设置服务器”字段。 我正在使用MQAX200.DLL连接到MQ 请让我知道如何从vb6连接到不同的服务器 下面是我们当前用于连接到队列管理器的代码: Form1.txtstreamLog_File.WriteLine Date & " " & Time & " STATUS: Attempting to connect to the MQ Queue Manage

我们正在将IBM Websphere MQ移动到不同的服务器VB6应用程序将位于不同的服务器中。 我需要填充“设置服务器”字段。 我正在使用MQAX200.DLL连接到MQ

请让我知道如何从vb6连接到不同的服务器

下面是我们当前用于连接到队列管理器的代码:

Form1.txtstreamLog_File.WriteLine Date & " " & Time & " STATUS: Attempting to connect to the MQ Queue Manager: " & Form1.strManagerQueueName
Set mconMQ = New MQAX200.MQQueueManager
With mconMQ

    'Set the Name of the Queue Manager (or allow to default)
    .Name = Form1.strManagerQueueName

    'Connect to Queue Manager
    .Connect

    'Get Connect Method Results & Display
    mlngConnectionHandle = .ConnectionHandle

    'Check Completion Code
    If .CompletionCode <> MQCC_OK Then
        Form1.txtstreamLog_File.WriteLine Date & " " & Time & " ERROR: Failed to connect to Queue Manager: " & Form1.strManagerQueueName & vbCr & _
                 "Reason Code:  " & .ReasonCode & vbCr & _
                 "Reason Text:  " & .ReasonName
        ConnectQueueManager = False
        Exit Function
    End If
End With    'mconMQ

Form1.txtstreamLog_File.WriteLine Date & " " & Time & " STATUS: Connected to the Queue Manager successfully"
ConnectQueueManager = True
Exit Function
MQAX200.DLL是用于IBM MQs无摩擦Microsoft ActiveX和VB6连接的DLL。IBM MQ类for.NET是推荐的替代技术

我找到的所有内容都表明,如果需要连接到多个队列管理器,则只能使用MQSERVER环境变量为单个队列管理器提供连接详细信息,或者使用MQCHLLIB/MQCHLTAB环境变量指向的MQ通道表

所有最新版本的知识中心v7.0.1都记录了这一点,这是我所能找到的最早的MQAX MQ ActiveX支持稳定在IBM WebSphere®MQ 6.0版本级别: MQ v7.0.1知识中心页面:

对ActiveX的支持已稳定在WebSphere®MQ版本6.0级别。要使用比版本6晚的WebSphere MQ引入的特性,请考虑使用.NET替代.

MQ v9.0知识中心页面:

ActiveX

IBM MQ ActiveX通常称为MQAX。MQAX是IBM MQ for Windows的一部分。对ActiveX的支持已稳定在IBM WebSphere®MQ版本6.0级别。要开发比版本6晚到IBM MQ的特性,请考虑使用.NET替代。有关在ActiveX中使用IBM MQ对象模型编码程序的信息,请参阅使用组件对象模型接口WebSphere MQ Automation Classes for ActiveX

此外,IBM在报告中还声明:

IBM MQ V9.0中删除的函数

IBM MQ对Microsoft ActiveX和VB6的支持

不推荐使用IBM MQ对Microsoft ActiveX和VB6的支持。IBM MQ类for.NET是推荐的替代技术

总之,自2005年6月IBM MQ v6.0发布以来,您正在使用的界面已经稳定,并且没有得到增强,并且只有缺陷修复。在v9.0中,它已被弃用,这表明IBM将从产品的未来版本中删除它

请注意,您也不能使用TLS加密或使用Microsoft ActiveX库将用户名和密码传递给MQ,并且在保护SVRCONN通道不受未授权连接的方式上会受到限制

我建议您转换为.NET库。示例位于MQ安装目录下的tools\dotnet\samples中

2017年4月17日更新

IBM MQ v9知识中心页面现已更新,以反映IBM MQ对Microsoft ActiveX和VB6的支持已被弃用

不支持针对MicrosoftActive X和Microsoft Visual Basic 6.0的IBM MQ支持

IBM MQ对MicrosoftActive X和 不推荐使用Microsoft Visual Basic 6.0。NET的IBM MQ类包括 推荐的更换技术。看见 和


MQ管理器和队列位于不同的服务器上。我正在通过MQAX200连接到MQ。使用MQAX200.MQQueueManager'的代码设置队列管理器的名称或允许默认值。名称=Form1.strManagerQueueName.ChannelAutoDefinition.ChannelName=%CL.SELECTA.SELQMD1.ChannelAutoDefinition.ConnectionName=selmqrhd11'连接到队列管理器。连接代码很抱歉,我在这里遇到了混淆尝试更早地使用代码进行测试,但不起作用。请查找上面的代码,它是一个工作版本,当前正在使用。如您所见,这里没有提供服务器/连接名称。这就是我想知道的,在哪里可以设置服务器/连接名称?它用于连接到同一服务器上的队列管理器。现在我们要将此MQ移动到不同的服务器。因此,我必须编写一个新代码来连接不同服务器上的MQ。因此,当我阅读MQ手册时,它说我需要设置MQSERVER变量。我知道我可以通过命令提示符进行设置。我想知道是否有任何方法可以在我的代码中设置它?而且我还没有定义SVRCONN。感谢您提供这些详细信息,它确实帮助我找到了不使用MQAX200.DLL的方法。如果MQ server安装在应用程序以外的服务器上,我们应该使用MQIC32.DLL,否则使用MQIC.DLL。示例项目(如amqscnxb.vbp)非常有用,安装MQ客户端后将立即安装。希望这对其他面临类似问题的人有所帮助。