【问题标题】:TIBCO Attempt to acknowledge message(s) not valid for this consumerTIBCO 尝试确认对此消费者无效的消息
【发布时间】:2017-04-15 03:04:25
【问题描述】:

我正在尝试通过 TIBCO EMS 发布消息。在处理了几条消息后,我会自动收到此错误并停止处理。一段时间后,我可以处理大约 10K 的消息。这是我得到的错误。请就此提出建议

2016-11-30 13:39:31,170 ERROR c.b.e.d.AckMessageListenerController - Listener for Queue[TEST.DEV.QUE] throwed an exception, closing session to avoid possible message loss
javax.jms.IllegalStateException: Attempt to acknowledge message(s) not valid for this consumer

【问题讨论】:

  • 这种情况是否意味着同一会话中的队列只有两个接收者?
  • 在这种情况下,我们是否有此队列的陈旧连接?

标签: java jms message-queue tibco tibco-ems


【解决方案1】:

查看此队列有多少消费者。 此错误表示您正在尝试确认此消息不是为您准备的。 该过程是否从任何检查点开始?

【讨论】:

  • 不。消息由同一服务器生成和使用。我们有这种设计来在两个不同的应用程序层之间进行通信。当我检查队列属性时,我观察到没有设置流控制、过期属性。那么,是否会出现消息在被消费者消费之前在队列中过期的情况。这会是有效的场景吗?
  • 我们使用 CLIENT_ACK 作为确认模式。当生产者快速推送消息而消费者非常缓慢地接收消息时,好的做法是什么(尽管这肯定表明消费者端的代码泄漏)
猜你喜欢
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 2012-11-26
  • 1970-01-01
  • 2016-03-14
  • 2013-08-01
相关资源
最近更新 更多