设置关闭和断开 IBM MQ.NET 客户端的超时

2023-11-29

是否可以为以下代码设置超时时间:

private MQQueueManager queueManager;
private MQQueue queue;

   ...
queue.Close();
queueManager.Disconnect();

原因是有时连接在尝试关闭时会卡住。线程在 Close() 或 Disconnect() 上阻塞。

Update

客户端使用托管客户端、CCDT 文件、集群队列管理器和其他可能导致不同设置的功能。

请提供代码示例。

我们可以通过 API 使用类似的方法更改超时设置吗,如下所示:

    int openOptions = Set possible settings here

    var properties = new Hashtable
    {
          Set possible settings here
    };

    _queueManager = new MQQueueManager(_queueManagerName, properties);
    _queue = _queueManager.AccessQueue(QUEUE_NAME, openOptions);

MQ 客户端和 MQ 服务器决定连接超时的方式基于协商的心跳(HBINT) 运行值SVRCONN渠道。经协商的HBINT始终是双方协商的最高值SVRCONN和客户端应用程序。

Note: SVRCONN HBINT有一个默认值300.

超时通过以下两种方式之一确定:

  1. 如果协商的HBINT小于 60 超时为 2xHBINT.
  2. 如果协商的HBINT大于或等于 60 则 TIMEOUT 为HBINT + 60.

特定于 .NET 客户端相关领域HBINT:

APAR IT26614 纠正了以下三个问题:

  1. 在非托管或托管模式下,记录表明,如果您不使用 CCDT,HBINT将使用的值SVRCONN渠道。实际上,如果不使用 CCDTHBINT在客户端默认为300所以这是最低的HBINT你会看见。

  2. 特定于托管 .NET 客户端HBINT不能低于SVRCONN HBINT连接将失败并显示 2059。此问题无论是否有 CCDT 都会产生影响。

    • 使用 CCDT,您无法设置CLNTCONN HBINT的值小于SVRCONN HBINT
    • 如果没有 CCDT,您将会受到影响SVRCONN HBINT被设定为301或更高
  3. 特定于托管.NET,客户端接收超时以毫秒而不是秒为单位计算。在这种情况下,根据 IBM 的说法,该缺陷已经存在很长时间了,但直到 APAR 才出现IT16167:托管 .NET 客户端应用程序不向队列管理器发送检测信号请求在 8.0.0.10 和 9.0.0.4 中引入(IBM 也确认它存在于 GA 9.1.0.0 中)。以前这不是问题的原因是托管 .NET 从未启动心跳,队列管理器始终会在 HBINT + 5 秒发送心跳,并且 .NET 客户端会响应。一旦纠正了这个问题,接收超时的错误计算就出现了。

The fix is targeted for delivery in the following PTFs:

Version    Maintenance Level
v8.0       8.0.0.13
v9.0 LTS   9.0.0.7
v9.1 CD    9.1.3
v9.1 LTS   9.1.0.3

截至 2019 年 7 月 12 日,仅发布了 9.0.0.7 和 9.1.3,可以从以下位置下载:

  • 9.0.0.7 MQC9:IBM MQ V9 客户端
  • 9.1.3 MQC91:IBM MQC91:IBM MQ 客户端

除非您使用的是amqmdnet.dll其中包括上述 APAR,或者您要求 IBM 为您提供任何较低版本的 IFIX,实现低于 300 HBINT 的唯一方法将需要SVRCONN HBINT与使用 CCDT 的客户端结合设置为较低的值CLNTCONN HBINT设置为较低的值。基于非托管或托管 .NET,您有两种选择:

  1. 使用非托管 .NET,您可以设置CLNTCONN HBINT to 1并允许客户始终协商SVRCONN HBINT价值。然后,您需要 MQ 管理员来设置SVRCONN HBINT到所需的值。
  2. 使用托管 .NET,您需要 MQ 管理员来设置SVRCONN HBINT到所需的值,然后您需要设置 CCDTCLNTCONN HBINT与相同的值SVRCONN HBINT.

如果您使用的是amqmdnet.dll其中包括上述 APAR,或者您要求 IBM 为您提供任何较低版本的 IFIX,工作原理如下:

  1. 如果不使用 CCDT,客户端将使用等效的HBINT(1)并将谈判直至SVRCONN value.
  2. 如果使用 CCDTCLNTCONN可以有HBINT set to 1当不使用 CCDT 时,这会导致与上面相同的行为,HBINT将协商直至SVRCONN value.

无论是否使用 CCDTCLNTCONN HBINT set to 1或者不使用客户端将使用的 CCDTHBINT(1),您需要请求 MQ 管理员来设置SVRCONN HBINT为较低的值以实现较短的超时。


设置示例HBINT关于 CCDTCLNTCONN渠道:

DEFINE CHL(CLIENT_CHL) CHLTYPE(CLNTCONN) CONNAME('1.2.3.4(9999)') QMNAME(ABC) HBINT(1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置关闭和断开 IBM MQ.NET 客户端的超时 的相关文章

  • 忽略父进程中的信号

    我正在尝试实现一个 shell 程序 我希望 shell 程序忽略 SIG INT ctrl c 但在我的程序中 子进程也会忽略 SIG INT 信号 但它不应该这样做 因为 exec 应该将子进程带到另一个程序 并且该程序默认情况下应该处
  • 如何使用平台调用编组 void*

    我需要从 dll 中包含的 C api 调用函数 函数原型如下 int func char name void value 其中指针值的内容可以引用依赖于传递的名称的任何类型 我不确定如何设置 Dll 输入端口以正确编组此 void 我一直
  • 增强缓冲区调用后丢失自定义点类型的数据

    我有我自己的观点 class LocationWayPoint public latlong container location WORD index PWeakBasicStation station namespace boost n
  • std::istringstream >> 使奇怪的行为加倍

    下面的代码打印0在 mac osx 上使用 clang 其他地方都会打印5 clang https ideone com mVgpzS gcc https ideone com oZ0hy6 include
  • 使用标准范围连接带有分隔符的字符串范围

    我想使用范围将跨度中包含的四个字节转换为字符串 这是输入和输出的示例 std span
  • 用户“NT AUTHORITY\ANONYMOUS LOGON”的 Web 应用程序登录失败

    我看到很多人都遇到这个错误 但他们的情况似乎都与我的有点不同 我有一个 ASP NET 4 0 Web 应用程序 它在 Windows 2003 Server 上的 IIS 6 0 中运行 当我远程到 Web 服务器框并登录并访问该站点时本
  • 调用 Console.ReadLine() 的方法的 C# 单元测试

    我想为名为的类的成员函数创建一个单元测试ScoreBoard它存储了一场比赛中排名前五的球员 问题是我为 SignInScoreBoard 正在呼叫Console ReadLine 这样用户就可以输入他们的名字 public void Si
  • 如何将8字节的十六进制数输入到char数组中?

    我想生成以以下开头的十六进制数字序列07060504003020100 下一个数字是0f0e0d0c0b0a0908等等按这个顺序 当我使用unsigned long long int并输出数据的前4位 这意味着0被截断 它打印706050
  • 从 ASP.NET Web API 返回 HTML

    如何从 ASP NET MVC Web API 控制器返回 HTML 我尝试了下面的代码 但由于未定义 Response Write 而出现编译错误 public class MyController ApiController HttpP
  • ld: 无法对非 PE 输出文件执行 PE 操作错误

    我是操作系统编程的新手 我正在读一本书 其中给出了一个简单的内核示例 如下所示 main char video memory 0xb8000 video memory X 为了编译这个名为 kernel c 的文件 我在 Windows 7
  • 通用 lambda 的数量

    可以通过访问非泛型 lambda 的数量来推断其数量operator template
  • 在 Windows 上构建 MLT 框架时出错

    我一直在遵循官方提供的构建指南here http www mltframework org bin view MLT WindowsBuild 我需要 MLT 来创建视频播放器 并且我选择仅安装前 4 个库 如指南中所述 FFmpeg SD
  • 如何获取 EF 中的实体更改增量?

    我只需要获取已更改字段的列表 数据存储区是 ssce 因此没有可用的触发器 EF 是否支持获取列表或构建通用组件 根据上下文的类型和生成的实体 您可以通过多种不同的方式来完成此操作 如果对象继承自 Entity 或 POCO 您可以使用Ob
  • 使用智能指针在大型对象集合中创建多个索引

    我正在为一个大型对象集合创建多个索引 即使用不同的键 对象可以改变 集合可以缩小和增长 到目前为止我的想法 保留某种指向对象的指针的多个集合 使用set代替map以获得更好的封装 使用 unordered set 可以很好地扩展大型数据集
  • 通过 C++ 标头在 C++ 和 C# 中使用枚举

    我有一个用 C 编写的服务器 位于命名管道的末端 嗯 提供服务 可以发送到服务器的命令在位于头文件中的枚举中定义 enum e doThing1 e doThing2 e doLastThing 所需枚举的值被放入发送到服务器的消息的第一个
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • TransactionScope 在某些机器上自动升级到 MSDTC?

    在我们的项目中 我们使用 TransactionScope 来确保我们的数据访问层在事务中执行其操作 我们的目标是not要求在我们的最终用户的计算机上启用 MSDTC 服务 问题是 在我们一半的开发人员机器上 我们可以在禁用 MSDTC 的
  • 编写一个转储屏幕像素的 RDP 客户端

    我想在中实现 RDP 客户端C 它能够获取屏幕所有像素的颜色值并将它们转储到文件中 我知道这在概念上与 RDP 的工作方式不同 但我的应用程序需要它 我正在尝试利用freerdp https github com FreeRDP FreeR
  • WPF - 将窗口置于前面

    我有一个 WPF 窗口 我没有关闭它 相反 我执行 Hide 和 Show 它 现在 当我双击记录上网格中的主窗口时 这将触发 Show 窗口 该窗口将始终显示在主窗口后面 我尝试过以下方法 但没有成功 view Show view Act
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl

随机推荐

  • 用于测量 Java 代码的经验计算复杂性的工具?

    我有一些 Java 代码 我希望测量它们的经验计算复杂性 有一个趋势教授以编译输入为输入的工具C C 程式 是否有类似于 trend prof 的工具 可以将编译后的 Java 程序作为输入 声纳常用 http www sonarsourc
  • LEFT JOIN 仅第一行

    我读过很多关于仅获取左连接的第一行的线程 但是 由于某种原因 这对我不起作用 这是我的结构 当然是简化的 Feeds id title content 1 Feed 1 Artists artist id artist name 1 Art
  • ASP.NET MVC:路由到 URL

    在 MVC 中获取路由的 URL 相对或绝对 的最简单方法是什么 我在 SO 上看到了这段代码 但它看起来有点冗长 并且没有枚举 RouteTable Example List
  • 您可以从 html 元素触发 Sencha Touch 中的操作/事件吗?

    我有一个 Sencha 选项卡面板 每个选项卡通过 ajax 加载 html 内容 其中一个组件是帖子 列表 访问者可以使用它再次向下钻取以阅读整个帖子 我的问题是 我可以通过html触发视图切换吗 或者我应该通过 JSON 加载帖子数据
  • Objective-C 中成员变量名称中的下划线表示什么? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Objective C 中使用下划线作为属性名称前缀 我是一名 C C 开发人员 正在学习 Objective C 最近我开始学习在网上找到的教程 代码如下 interface MapDemoAn
  • android eclipse 更新,现在应用程序在尝试运行时崩溃

    我的应用程序正在运行 我没有更改源代码中的任何内容 Eclipse 已更新 现在当我尝试运行该应用程序时 它无法打开 并且会显示错误消息 您必须强制关闭它 它甚至没有像我以前见过的其他等待选项 我知道这信息很少 但这就是我所拥有的一切 这就
  • C# 事件和线程安全

    我经常听到 读到以下建议 在检查事件之前 请务必先复制该事件null并开火 这将消除事件变为线程的潜在问题null在检查 null 的位置和触发事件的位置之间的位置 Copy the event delegate before checki
  • iPhone UIViewController 内的 UINavigationController

    Steps 项目清单 创建一个名为 Nav 的项目 创建一个新的UIViewControllerBaseViewController 使用 XIB 和 FirstViewController 使用 XIB In the NavAppDele
  • 如何在Linux中操作页面缓存?

    我想知道Page Cache中缓存了哪些文件 并且想实用地释放特定文件的缓存空间 如果需要的话 我可以编写内核模块 甚至修改内核代码 有人能给我一些线索吗 首先 内核不会维护页面缓存中所有文件的主列表 因为它不需要此类信息 相反 给定一个索
  • 如何使用 PySpark 删除数据框中基于多个过滤器的列?

    我有一个单元格可以具有的有效值列表 如果一列中的一个单元格无效 我需要删除整列 我知道有删除特定列中的行的答案 但在这里我将删除整个列 即使其中的一个单元格无效 有效 无效的条件是一个单元格只能有三个值 Messi Ronaldo Virg
  • 根据浏览器语言在

    我是 HTML 新手 我想在禁用 JavaScript 时显示一条消息 所以我把消息放进去
  • 如何将字符数组转换为字符串?

    转换 C string使用 char 数组非常简单c str字符串的函数然后做strcpy 然而 如何反其道而行之呢 我有一个 char 数组 例如 char arr This is a test 转换回 string str This i
  • 在 Windows 中将 Bonjour (dns_sd.h) 库添加到 Qt

    我一直在尝试正确添加Apple提供的开源dns sd h库 我正在编写一个使用 BonjourRegistrar 类的程序 如下所示 链接文本 我已经在Mac环境上编写了我的程序 现在我正在尝试将其移植到Windows Bonjour SD
  • 在 Python 中将 .CSV 文件转换为 .DTA 文件

    我希望通过 Python 自动化将许多 CSV 文件转换为 DTA 文件的过程 DTA 文件是由 Stata 统计语言处理的文件类型 然而 我还没有找到一种方法来做到这一点 The R语言有写 dta 它允许将 R 中的数据帧转换为 dta
  • Qt 5.5 和 OpenGL:检索设备信息

    我编写了一个 Qt 5 5 应用程序 它以 QOpenGLWidget 的形式使用 OpenGL 现在我希望用户可以从应用程序中看到他们的设备信息 我的意思是 卡的名称 例如 GT 640 Vendor GPU 总内存 驱动版本 扩展列表
  • 检测没有磁盘空间iPhone SDK

    假设我需要将许多图像写入iPhone文件系统 我需要找到足够的空间将图像写入磁盘 可以使用iPhone SDK吗 对的 这是可能的 请参阅以下教程 使用强大的 google 搜索引擎找到 http iphoneincubator com b
  • 如何使用 insert_many 安全地忽略重复的键错误

    当将 insert many 与 pymongo 一起使用时 我需要忽略重复插入 其中重复项基于索引 我在 stackoverflow 上看到过这个问题 但没有看到有用的答案 这是我的代码片段 try results mongo conne
  • 如何使用 JSP/Java 检测移动设备(iOS 和 Android)?

    只是想知道是否有人遇到过这个 基本上 我希望使用 JSP 检测 iOS 和 Android 并能够有条件地将 CSS 和 JS 文件添加到页面 有任何想法吗 一个非常简单的解决方案是 由于 else 语句非常短 因此仅当您只提供 iOS 和
  • 从字符串名称在程序集中创建类实例

    我不确定这是否可行 而且我对在 C NET 中使用程序集还很陌生 我想做的是在提供该类的字符串名称时创建该类的实例 像这样的事情 using MyAssembly namespace MyNameSpace Class MyClass in
  • 设置关闭和断开 IBM MQ.NET 客户端的超时

    是否可以为以下代码设置超时时间 private MQQueueManager queueManager private MQQueue queue queue Close queueManager Disconnect 原因是有时连接在尝试