java – 具有“消息屏障”功能的消息队列?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 具有“消息屏障”功能的消息队列?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1764字,纯文字阅读大概需要3分钟。
内容图文
![java – 具有“消息屏障”功能的消息队列?](/upload/InfoBanner/zyjiaocheng/768/15ab5a1864694197b6f218fb929c5022.jpg)
是否有消息队列实现允许通过在消息流中插入“消息障碍”将工作分解为“批处理”?让我澄清一下.消息屏障之后的任何消息都不应传递给队列的任何使用者,直到屏障之前的所有消息都被消耗.有点像同步点.如果所有消费者在到达障碍时收到通知,我也会更喜欢.
有什么像这样的吗?
解决方法:
我不知道现有的,广泛可用的实现,但如果你允许我,我会提出一个使用代理的非常简单的通用实现,其中:
> producer生成器写入代理队列/主题
>代理转发到原始队列/主题,直到代理读取屏障消息,此时:
>代理可以通过将屏障消息转发到原始主题来通知主题订阅者屏障,或者
>代理可以通过以下方式通知队列订户屏障:
>定期发布障碍信息,直到屏障被清除;这并不能保证所有消费者都会收到一个通知,尽管所有消费者最终都会清除障碍(有些可能会收到0个通知,其他可能会收到1个通知 – 所有这些都取决于用于向消费者分发消息的调度程序的类型,例如,如果不是-roundrobin)
>使用专用主题每个屏障通知每个消费者一次
>代理停止转发来自代理队列的任何消息,直到屏障被清除,也就是说,直到原始队列清空和/或所有消费者都已确认所有队列/主题消息(如果有)通向屏障
>代理恢复转发
UPDATE
感谢Miklos指出,在JMS下,框架不提供异步交付的确认(JMS中所谓的“确认”纯粹是消费者方面的概念,并且不能代理.)
因此,在JMS下,现有的实现(适用于障碍)可能已经通过“确认队列”提供应用程序级别的确认(而不是原始队列 – 这将是“请求队列”.)消费者会必须通过向代理确认队列发送确认消息来确认请求的执行;在将确认消息转发给生产者之后,代理将使用确认消息来跟踪屏障何时被清除.
如果现有的实现(适用于障碍)尚未通过“确认队列”提供应用程序级别的确认,那么您可以:
>让代理使用QueueBrowser,前提是:
>你正在处理的是queueus而不是事件
>您希望在交付时同步而不是执行确认,以及
>可以在第一次交付时进行同步,即使请求实际已中止并且必须重新交付(即使在屏障被清除之后).我认为Miklos已经将这个问题指出了IIRC.
>否则,添加代理使用的确认队列,并调整使用者以向其写入确认(实际上是上面的JMS场景,除非代理不需要向生产者转发确认消息,除非您的生产者需要该功能. )
内容总结
以上是互联网集市为您收集整理的java – 具有“消息屏障”功能的消息队列?全部内容,希望文章能够帮你解决java – 具有“消息屏障”功能的消息队列?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。