接收 Websphere MQ 消息时如何执行显式 ACK?

2024-01-12

我有一个应用程序正在侦听 IBM Websphere MQ 队列上的消息。 一旦消息被使用,应用程序就会执行一些处理逻辑。 如果处理完成正常,我希望应用程序确认该消息并将其从队列中删除。 如果处理时发生错误,我希望该消息保留在队列中。 这是如何实施的? (我正在使用.NET API) 谢谢。


MQ 支持单阶段提交协议。您在收到消息时指定同步点,然后发出COMMIT or ROLLBACK按要求。连接丢失时的默认操作是ROLLBACK如果程序故意结束而不解决事务COMMIT假设。 (这是依赖于平台的,因此习惯的建议是显式调用COMMIT而不是依赖类析构函数来为您完成此操作。)

无论消息是否持久,这都有效。但是,如果消息指定了过期时间并且在回滚后过期,则有可能不会再次看到该消息。

当然,如果程序发出ROLLBACK该消息通常会再次出现,因为它会返回到队列中的同一位置,对于 FIFO 队列来说,该位置位于顶部。如果消息的问题不是暂时的,那么这会导致读取/回滚/重复的有害消息循环。为了避免应用程序可以检查回退计数,如果超过某个阈值,则将消息重新排队到异常队列。

当使用 JMS 或 XMS 时,这是由类库为您完成的。如果输入队列的BOQNAME and BOQTHRESH属性设置为队列名称中的重新排队BOQNAME。否则,将尝试重新排队到死队列。如果失败(如果系统受到适当保护,则应该如此)侦听器将停止接收消息。

通常的建议是always指定一个回退队列,然后让类使用它或编写应用程序来使用它。

请参见使用说明MQGET http://www.ibm.com/support/knowledgecenter/en/SSFKSJ_7.0.1/com.ibm.mq.csqzak.doc/fr17310_.htm在 MQAPI 参考和MQGetMessageOptions.NET http://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.ref.dev.doc/q111200_.htm.Net 类参考中的页面。

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

接收 Websphere MQ 消息时如何执行显式 ACK? 的相关文章

  • IBM MQ 8 的 JMeter 3.2 点对点配置 => Java 异常

    我尝试对 IBM MQ 8 使用 JMeter 点对点 JNDI 配置并收到以下错误消息 java lang IllegalStateException QueueConnectionFactory expected but got com
  • WebSphere MQ 7.1 帮助需求 - 访问或安全性

    我想在 WebSphere MQ 服务器上创建一个队列管理器和一个队列 并且我想做两件事 1 使用 WMQ Explorer 从客户端访问队列管理器和队列 2 编写一个在客户端上运行的 Java 独立应用程序 并从队列中放入和接收消息 但是
  • IBM MQ 会话断开连接

    我正在创建一个像这样的 MQ 侦听器 它工作正常 但几分钟或几小时后就会因此异常而断开连接 我不控制服务器 这是通过专用电路而不是互联网进行的 我怀疑是网络问题其他服务在同一线路上运行没有问题 MQQueueConnectionFactor
  • 将 Apache ServiceMix 连接到 Websphere MQ

    我正在尝试从部署为 Apache Service Mix 上的 OSGI 包的驼峰路由连接到 websphere MQ 队列管理器 我已经部署了 Websphere MQ 附带的 IBM OSGI 包 并按如下方式配置了 Spring 配置
  • IBM MQ XMS 消息侦听器仅获取队列中已有的消息,而不是新消息

    我有 IBM MQ XMS 的发送者和接收者控制台应用程序 发送方填充队列 接收方使用 receive 方法使队列管理器出列 我使用带有 bool 值的 while 循环来继续运行接收器 以便每当队列中存在新消息时接收器都可以获取该数据 现
  • 使用 spring 在 Ibm Websphere MQ 中实现重试逻辑

    我正在使用 Spring 和 Websphere MQ 进行以下消息传递配置 我需要实现一个场景的重试逻辑 其中我从队列接收消息并将消息数据放到弹性搜索服务器 搜索服务器是非事务性的 如果搜索服务器关闭 我必须回滚消息再次放入队列并在一段时
  • 使用 WebSphere MQ 的 JMS 连接耗尽

    我已经配置了CachingConnectionFactory包裹着一个MQTopicConnectionFactory and MQQueueConnectionFactory每个缓存大小设置为 10 这些比在几个中使用jms outbou
  • IBM MQ 消息监听器

    您好 有谁知道如何使用 IBM MQ 创建消息监听器 我知道如何使用 JMS 规范来做到这一点 但我不确定如何为 IBM MQ 做到这一点 非常感谢任何链接或指针 虽然前面的响应者指出有一个 WMQ Java API 但 WMQ 也支持 J
  • 如何在 Linux 中进行队列管理器备份和恢复

    您好 我有名为 QM 1 的队列管理器 在这里 我已经备份了 QM 1 如下所示 之后 我在其他系统中创建了同名的队列管理器 QM 1 我需要恢复保存 qmgr 属性 请提供如何恢复队列管理器属性 saveqmgr m QM 1 f 一些选
  • IBM MQ 8 的 JMeter 配置

    我正在尝试使用 JMeter 测试 IBM MQ 8 0 有人有我需要的各种参数的示例 也许是屏幕截图 吗 我找到了几个例子 但非常不一致 更准确地说 我应该填写什么 队列连接工厂 JNDI 名称请求队列 一些示例显示队列名称 有些是 JN
  • 跨 docker 容器共享内存

    如果使用 Java MQ 类 而不是 JTA 将 Websphere MQ 用作 XA 分布式事务 事务管理器 则 Java 应用程序和 WMQ 都需要驻留在同一主机上 有人告诉我这是因为共享内存被用作进程间通信机制 Java 应用程序和
  • WebSphere MQ 中的消息组

    我有一个要求 我需要以属于某个组 设置组 ID 的消息由同一 bean 实例使用的方式处理 JMS 消息 通过 MDB 我在此需要的行为是按顺序处理具有相同组 ID 的消息 尽管消息顺序无关 并且将它们绑定到相同的 MDB 实例应该可以提供
  • 如何在 ITRS Geneos 中监控 MQ

    谁能举例说明如何在 ITRS 中设置如何使用 mq queue 插件监控 MQ 队列 我下面有两张它正在寻找的屏幕截图 我不确定这将如何帮助我们确定队列中卡住了多少消息 高级 选项卡下的设置告诉插件如何连接到 IBM MQ 队列管理器 如何
  • 使用 JMS 中的 CCDT 文件连接到 IBM MQ

    我尝试使用 JMS 和客户端通道定义表 CCDT 连接到 IBM MQ 当我单独指定 MQ 属性时 我能够成功连接到 QueueManager 但是当我尝试使用 CCDT 文件时 出现以下异常 由于客户端通道定义表 CCDT 用于确定客户端
  • WCF / WebService充当MQ消息的侦听器?

    也许我找错了方向 但我有一组服务 WebAPI 和 WCF 它们使用 WebSphere MQ 与其他系统交互 这没有问题 直到我现在需要找到一种方法listening对于队列之一上的消息 这是否可能 或者我是否需要走 Windows 服务
  • 有没有办法更改 Nifi 中 PublishJMS 处理器的交付模式?

    我使用 Nifi PublishJMS 处理器向 IBM MQ 发送消息 消息在 MQ 中具有持久性 持久性 我想将其更改为非持久性 Nifi PublishJms 处理器中是否有属性可以纠正此问题 或者是从MQ端完成的 我无权访问 MQ
  • 使用 JNDI 在 Tomcat 上设置 WMQ V8 连接工厂

    目前 我们的 Tomcat 配置 JNDI 是基于当前有效的此建议 如何使用 JMS 和 JNDI 连接到 Websphere MQ MQ 系列 服务器 http wiki apache org tomcat HowTo How do I
  • 使用 SSL 设置 .Net IBM.XMS 客户端

    我必须创建一个客户端来侦听队列上的消息 正在使用 SSL 我正在 dot net 中进行开发 我浏览了数百页的文档和论坛 找到了一些清晰简洁的内容 但看起来事实并非如此 我有一个 jks 并且我能够 telnet 到正在发布队列的服务器 下
  • 使用 JMS + CCDT 文件连接到 IBM MQ 时出现负载平衡问题

    我们正在尝试使用 CCDT 文件和 JMS 配置连接到 IBMMQ 我们能够连接到它 但这里有一个问题 由于我们使用 spring 使用 CCDT 文件设置连接工厂 因此它在应用程序启动时初始化一次 但不幸的是它一次只选择一个队列管理器 即
  • IBM Websphere MQ - 用于 Tomcat 部署的 EJB 和 MDB 迁移

    我已经为此苦苦挣扎了很长一段时间 我有一个 IBM Websphere MQ 它使用 EJB 和 MDB 以下是配置ejb mdb的地方

随机推荐

  • Sqoop 导出 Oozie 工作流程因找不到文件而失败,但从控制台运行时有效

    我有一个 6 个节点的 hadoop 集群 我通过 Sqoop 将数据从 MSSQL 中取出并返回到 MSSQL 中 Sqoop 导入命令工作正常 我可以从控制台 在 hadoop 节点之一 运行 sqoop 导出命令 这是我运行的 she
  • Android Studio:ButterKnife 6.1.0 重复类:$$View 注入器

    由于遇到 65K 方法问题 我将项目从 Eclipse 迁移到 AS 在解决了我最初在 AS 中遇到的每个依赖问题后 我陷入了这个问题 无论我从博客和 SO 本身的其他类似帖子中尝试什么 这个问题似乎都不会消失 我检查了启用注释处理在注释处
  • 同一列中具有不同格式的 Pandas 日期时间

    我有一个 pandas 数据框 其中有两种不同格式的日期时间 例如 3 14 2019 5 15 32 AM 2019 08 03 05 15 35 2019 01 03 05 15 33 2019 01 03 05 15 33 2 28
  • 如何删除数据库中的所有表而不删除数据库本身?

    我想从数据库中删除所有表 但不删除数据库本身 是否可以 我只是在寻找比删除数据库并再次创建它更短的方法 谢谢 最短的是重新创建数据库 但如果你不想 这是针对 MySQL PHP 的 没有测试过 但类似的东西 mysqli new mysql
  • 简单的 Clojure XML 编辑

    假设我有一个地图向量 username kbee firstname Kay lastname Bee username jcee firstname Jay lastname Cee 我想为每个地图生成 xml 文件 如下所示
  • mvn部署不加载S3凭证

    我正在将 Gradle 项目转换为 Maven 我正在做的事情之一是将 Jar 部署到 S3 我已经像这样配置了发行版
  • VBScript 中的 MsgBox "" 与 MsgBox()

    我正在尝试编写 VBScript 并使用 Randomize 和 MsgBox 等函数 我很好奇使用 和不使用它们有什么区别 例如 Randomize 这条线有效 Randomize 这条线也有效 MsgBox Hello World 这有
  • 如何从键盘的容器应用程序检测自定义键盘是否已激活?

    我想知道是否有一种方法可以让我检测从键盘容器应用程序是否已在设备的 设置 应用程序中激活关联的键盘 例如 我有兴趣在容器应用程序中添加一个简单的 步骤 功能 其中步骤 1 是 激活键盘 步骤 2 取决于步骤 1 的完成 因此 我有兴趣弄清楚
  • 如何确定 git pull 将下载多少数据?

    假设我通过热点使用手机昂贵的数据套餐 并且按 MB 付费 有没有办法检查如果我发出的话 git 需要下载多少数据git pull 明显没有下载 最简洁的答案是不 长的答案是 也许 但你需要某种辅助系统 注意git pull只是git fet
  • 使用 maven- assembly-plugin 创建两个可执行的 jar

    我有一个 Maven 项目 我想从中创建两个可执行的 jar 文件 一个将由用户交互使用 第二个将作为计划作业运行 读取前者生成的日志文件 最后 我希望这两个 jar 文件除了 MANIFEST MF 文件中的 Main Class 属性之
  • Objective-C/iPhone 开发中的延迟实例化

    简单的问题 我知道 Objective C 中所有属性都以 nil 开头 并且向 nil 发送消息不会执行任何操作 因此您必须使用 Class alloc init 进行初始化 在向新创建的属性发送消息之前 但是 如果我不向此属性发送消息或
  • Django JSON 字段。 “模块”对象没有属性“JSONField”

    我正在学习 Django 并因在模型中创建 json 字段而感到沮丧 我试图在模型中创建一个 json 字段 但出现错误 模块 对象没有属性 JSONField 这是我在 models py 中的类 class Question model
  • 使用 Azure Function v2 自定义 Application Insight TelemetryInitializer

    在 Azure 函数中 我们使用 NET HttpClient 类 Azure Servicebus SDK 和 Azure 存储 SDK 发出多个请求 所有内容都通过 Application Insight 日志记录中的构建完美记录 显示
  • 在 Internet Explorer 中是否有理由用 Script 替换 JavaScript?

    那么 当 JScript 与 JavaScript 不同时 IE 如何解释 jQuery 以及所有其他 JavaScript 将 IE 的 JavaScript 替换为 JScript 是否更好 是否存在性能差异 JScript 和 Jav
  • 正则表达式匹配后面没有任何内容的字符串

    我试图找出一个正则表达式序列 该序列将匹配下面列表中的第一项 但不匹配其他两项 Some Folder 是可变的 http www url com Some Folder http www url com Some Folder thing
  • R Shiny:修改选择后保留无功输入值

    我试图在用户修改另一个中的选择后将用户选择的值保留在动态生成的 selectInput 中selectInput multiple T 选项 每当我修改我的选择时 所有动态生成的值都会重置 例如 我首先从 Letters selectInp
  • 如何从 CursorAdapter 重写 getItemId(int pos) 方法?

    由于此处的另一个答案 我收到了这个问题 但没有解释如何执行我所要求的操作使用自定义适配器时如何获取 onItemClick ListView 中行的 id https stackoverflow com questions 4826683
  • 如何通过双击关闭 DateTimePicker

    我正在使用 jQuery DateTimePicker 插件 作者 特伦特 理查森 http trentrichardson com 并且只有在您选择日期和时间后才会关闭 然而 有些用户并不关心时间 他们希望日历在仅选择日期后关闭 我仅在选
  • React 的新上下文 api 与酶

    我一直在使用酶并且非常喜欢它 它适用于 React 16 直到我想测试使用 React 新上下文 api 的新项目 如果我仅使用浅层渲染我的基本组件并使用控制台记录组件的调试 我可以看到其内容 但是当我将新的上下文 api 与提供者和消费者
  • 接收 Websphere MQ 消息时如何执行显式 ACK?

    我有一个应用程序正在侦听 IBM Websphere MQ 队列上的消息 一旦消息被使用 应用程序就会执行一些处理逻辑 如果处理完成正常 我希望应用程序确认该消息并将其从队列中删除 如果处理时发生错误 我希望该消息保留在队列中 这是如何实施