2009-09-24 63 views
2

比方说,生产者将消息发送到JMS主题的“新闻”。 Consumer1读取消息,但Consumer2处于脱机状态,因此他还没有阅读消息。JMS规范或各种实现是否支持消息的传递确认?

有没有被通知Consumer1已经读了他的消息,任何内置的(该规范或IMPL)的方式对生产国,但Consumer2有没有呢?事实上,这将反映电子邮件的阅读通知。

很明显,你可以通过让每个消费者发送确认实现这一点,但我正在寻找的东西已经JMS或JMS系统的一部分。

回答

3

JMS FAQ

JMS API消息系统提供经由PERSISTENT 消息的一次一次且仅 传递语义保证 递送。此外,消息 消费者可以通过使用 CLIENT_ACKNOWLEDGE模式或事务 会话保证消息的可靠 处理。这实现了可靠的 交付与最小同步 ,是企业短信模式 大多数厂商和开发者更喜欢。

JMS API没有定义系统消息的模式 (例如传递 通知)。如果一个应用程序需要 消息 接收确认,它可以定义一个 应用级确认 消息。当他们在 发布/订阅 应用的背景下进行检查

这些问题更清楚地了解 。在此背景下, 同步交付使用和/或系统 确认收到的不是实现 可靠的应用程序(因为 生产者的定义是不是一个有效 机制, 不想要的,负责 端到结束消息传递)。

我不是专家,但我认为这是说规范没有为消费者确定收货的方式,通过设计确定生产者。我不知道,做任何实现的 - 如果他们做到了,它看起来会是从规范捕获模型中的大相径庭。