IBM MQ Client 开发环境测试

IBM MQ Client development environment test

我即将开发一个 IBM MQ 客户端。

我想从最基础的开始,所以我创建了一个项目来连接到一些队列。

public void Init(IbmMqConnection configuration)
{
    // _properties is a Hashtable
    _properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
    _properties.Add(MQC.HOST_NAME_PROPERTY, configuration.Host);
    _properties.Add(MQC.CHANNEL_PROPERTY, configuration.Channel);

    MQEnvironment.Port = 1414;
    MQEnvironment.UserId = configuration.UserId;

    _qm = new MQQueueManager(configuration.QueueManager, _properties);

    int options = 0;
    options += MQC.MQOO_OUTPUT;
    options += MQC.MQOO_INQUIRE;
    options += MQC.MQOO_FAIL_IF_QUIESCING;

    _q = _qm.AccessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE", options);
}

并使用下面的配置调用此方法

_qManager.Init(new IbmMqConnection
{
    Host = "DESA_MQ",
    UserId = "mqscpd",
    Channel = "SCPPAQUE.WIN.SVRCONN",
    QueueManager = "QMDESA01"
});

...当然我得到了这个Exception

MQException -> Completion Code 2 and Reason Code 2298

嗯,我没想到会有什么不同。
我漫游了 IBM MQ Documentation,在安装真正的开发环境之前,我没有发现任何与服务任何类型的开发环境相关的东西。

我希望我缺少一些东西来开发我的项目,指出本地安装的(免费)开发服务器或其他东西。

我安装了 IBMMQDotnetClient 软件包,版本 9.1.5。

总结一下,在部署到真正的 IBM MQ 系统之前,我如何开发我的项目来测试它?
谢谢。

如果您有 Docker(或其他容器运行时)可用,IBM MQ 在 Dockerhub 上可供开发使用。

如果您使用 nuget 包开发 IBM MQ .NET 应用程序,则必须使用托管模式。要使用托管模式,您必须将 TRANSPORT_PROPERTY 设置为 TRANSPORT_MQSERIES_MANAGED。 MQC.TRANSPORT_MQSERIES_CLIENT 使用非托管模式并且在 MQ .NET 标准库中不受支持,这就是您看到 "MQException -> Completion Code 2 and Reason Code 2298" 的原因。修改 属性 应该可以。

    _properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
    _properties.Add(MQC.HOST_NAME_PROPERTY, configuration.Host);
    _properties.Add(MQC.CHANNEL_PROPERTY, configuration.Channel);

安装 IBM MQ v9.1.5 客户端后,您的项目模板包含一些基本的 MQ .NET API,您可以使用这些模板连接到队列管理器,然后执行 Put/Getoperation.Following知识中心link有一些资料:https://www.ibm.com/support/knowledgecenter/SSFKSJ_9.1.0/com.ibm.mq.dev.doc/q134410_.htm.

正如 Josh 指出的那样,LearnMQ 也是一个很好的起点。