让我们说生产者向JMS主题“新闻”发送消息。 Consumer1读取消息,但Consumer2处于脱机状态,因此他还没有阅读消息。
是否存在任何内置(针对规范或impl)方式,以便生产者通知Consumer1已阅读其消息,但Consumer2还没有?事实上,这将反映电子邮件的读取通知。
显然,您可以通过让每个Consumer发送一个确认来实现这一点,但我正在寻找已经成为JMS或JMS系统一部分的东西。
答案 0 :(得分:3)
JMS API消息传递提供了保证 通过一次性和一次性交付 PERSISTENT的交付语义 消息。另外,消息 消费者可以保证可靠 使用任一处理消息 CLIENT_ACKNOWLEDGE模式或事务处理 会话。这实现了可靠性 以最小同步交付 并且是企业消息传递模型 大多数供应商和开发人员更喜欢。
JMS API未定义架构 系统消息(例如交付 通知)。如果申请 需要确认消息 收据,它可以定义一个 应用程序级确认 消息。
这些问题更清楚 在被检查时理解 发布/订阅的上下文 应用。在这种情况下, 同步传递和/或系统 确认收据不是 有效的实施机制 可靠的应用(因为 根据定义,生产者不是,和 不想成为,负责 端到端消息传递)。
我不是专家,但我认为这是说该规范并没有为消费者定义一种方式来确认按照设计向生产者收货。我不知道有任何实现 - 如果他们这样做,看起来它与规范捕获的模型有很大不同。