【问题标题】:IBM MQ Transport Type Managed Work but Client Does Not WorkIBM MQ 传输类型受管工作,但客户端不工作
【发布时间】:2020-02-12 12:26:55
【问题描述】:

我的客户端连接正在使用

MQC.TRANSPORT_PROPERTY = MQC.TRANSPORT_MQSERIES_MANAGED

但不适用于:

MQC.TRANSPORT_PROPERTY = MQC.TRANSPORT_MQSERIES_CLIENT

当我收到此错误时:

为 MQC.TRANSPORT_MQSERIES_CLIENT 返回 MQRC_FUNCTION_NOT_SUPPORTED

我想控制提交和回滚,所以我决定更改传输类型,但它不支持它。为什么会这样?

我在 .netcore 项目中使用 dll => amqmdnetstd.dll 9.1.2

代码总结

Hashtable connectionProperties = new Hashtable();
connectionProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
connectionProperties.Add(MQC.PORT_PROPERTY, "5577");
connectionProperties.Add(MQC.HOST_NAME_PROPERTY, hostName);
connectionProperties.Add(MQC.CHANNEL_PROPERTY, channel);

MQQueueManager qMgr = new MQQueueManager(qManager, connectionProperties);

【问题讨论】:

    标签: .net-core ibm-mq


    【解决方案1】:

    .NET Standard 的 IBM MQ 类仅支持 TRANSPORT_MQSERIES_MANAGED 模式。

    请参阅 IBM MQ 知识中心页面IBM MQ 9.1.x>IBM MQ>Developing applications>Developing .NET applications>Getting started with IBM MQ classes for .NET>Installing IBM MQ classes for .NET Standard

    用于 .NET Framework 的 IBM MQ 类和用于 .NET Standard 功能的 IBM MQ 类

    下表列出了适用于 .NET Framework 的 IBM MQ 类和 .NET Standard 的 IBM MQ 类的 IBM MQ 版本 9.1.1 的功能。

    表 1. 适用于 .NET Framework 的 IBM MQ 类与适用于 .NET Standard 功能的 IBM MQ 类之间的差异

    Feature         | IBM MQ classes for .NET Framework | IBM MQ classes for .NET Standard
    ----------------+-----------------------------------+----------------------------------
    Transport Modes | Managed, Unmanaged, and Bindings  | Managed
    

    如果您想使用TRANSPORT_MQSERIES_CLIENT 模式,您需要切换到amqmdnet.dll,该模式仅适用于.NET Framework 并且已由IBM 稳定,请参阅IBM MQ 知识中心页面IBM MQ 9.1.x>IBM MQ>Developing applications>Developing .NET applications>Writing and deploying IBM MQ .NET programs>Using the stand-alone IBM MQ .NET client

    从 IBM MQ 版本 9.1.1 开始,amqmdnetstd.dll 库可用于 Windows 上的 .NET Standard 支持(请参阅为 .NET Standard 安装 IBM MQ 类。仍然提供 amqmdnet.dll 库,但是这库已稳定;也就是说,不会向其中引入任何新功能。 对于任何最新功能,您必须迁移到 amqmdnetstd.dll 库。但是,您可以继续使用 IBM 上的 amqmdnet.dll 库MQ 9.1 版长期支持或持续交付版本。

    【讨论】:

    • .NET Standard 的 IBM MQ 类仅支持 TRANSPORT_MQSERIES_MANAGED 模式。 这是使用 `queueManager.Backout(); 的限制吗? ` ?
    • 托管模式应该支持SYNCPOINT和提交/退出,你能解释一下你在问什么吗?
    • 我想使用 queueManager.Commit() 和 queueManager.Backout() 从队列中获取 10 条消息并运行 Backout() 代码,但回滚不起作用。如果我运行 Backout 10 消息应该保持队列但不是。客户端传输类型是 MQC.TRANSPORT_MQSERIES_MANAGED getOptions 是 MQC.MQOO_OUTPUT + MQC.MQGMO_SYNCPOINT + MQC.MQOO_FAIL_IF_QUIESCING
    • 您能否打开一个新问题并在您的问题中显示代码示例。 MQOO 不是 GET 选项,它们是 OPEN 选项,我认为您混淆了两件事。然而,这将是一个新问题,我已经回答了你原来的问题。
    • 新问题已打开stackoverflow.com/questions/60190371/…@JoshMc
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2015-06-12
    • 1970-01-01
    • 2015-03-04
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多