【发布时间】:2009-09-24 22:12:27
【问题描述】:
假设生产者向 JMS 主题“新闻”发送消息。 Consumer1 读取了消息,但是 Consumer2 离线,所以他还没有读取消息。
是否有任何内置(规范或实现)方式可以通知生产者 Consumer1 已阅读他的消息,但 Consumer2 没有?事实上,这将反映电子邮件的阅读通知。
显然,您可以通过让每个消费者发送确认来实现这一点,但我正在寻找已经是 JMS 或 JMS 系统一部分的东西。
【问题讨论】:
标签: jms
假设生产者向 JMS 主题“新闻”发送消息。 Consumer1 读取了消息,但是 Consumer2 离线,所以他还没有读取消息。
是否有任何内置(规范或实现)方式可以通知生产者 Consumer1 已阅读他的消息,但 Consumer2 没有?事实上,这将反映电子邮件的阅读通知。
显然,您可以通过让每个消费者发送确认来实现这一点,但我正在寻找已经是 JMS 或 JMS 系统一部分的东西。
【问题讨论】:
标签: jms
JMS FAQ 说
JMS API 消息传递提供有保证的 通过一次性交付 PERSISTENT 的传递语义 消息。另外,留言 消费者可以确保可靠 通过使用任一处理消息 CLIENT_ACKNOWLEDGE 模式或已交易 会议。这实现了可靠 以最小同步交付 并且是企业消息传递模型 大多数供应商和开发人员都喜欢。
JMS API 没有定义模式 系统消息(例如传递 通知)。如果一个应用程序 需要确认消息 收据,它可以定义一个 应用层确认 消息。
这些问题更清楚 当他们被检查时理解 发布/订阅的上下文 应用程序。在这种情况下, 同步交付和/或系统 回执不是 有效的执行机制 可靠的应用程序(因为 根据定义,生产者不是,并且 不想被,负责 端到端的消息传递)。
我不是专家,但我认为这是在说明规范并未通过设计定义消费者向生产者确认收货的方式。我不知道有任何实现 - 如果他们这样做了,它看起来与规范捕获的模型有很大的不同。
【讨论】: