- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的应用程序中,发布者创建一条消息并将其发送到一个主题。
然后它需要等待,当所有主题的订阅者都确认消息时。
它不会出现,消息总线实现可以自动执行此操作。因此,我们倾向于让每个订阅者在完成后向客户发送他们自己的新消息。
现在,客户端可以接收所有此类消息,并且当它从每个目的地收到一条消息时,就可以进行任何它必须做的清理工作。但是,如果客户端(发送方)在确认流中途崩溃了怎么办?为了处理这样的不幸,我需要在客户端(重新)实现总线已经实现的东西——保存传入的确认,直到我得到足够的确认。
我不相信,我们的需求是如此深奥——您将如何处理这种情况,发件人(发布者)必须等待来自多个收件人(订阅者)的确认?有点像从每个订阅者向邮件列表请求(和等待)回执......
如果重要的话,我们正在使用 RabbitMQ。谢谢!
最佳答案
您正在寻找的功能听起来像是一种消息传递解决方案,可以跨消息的发布者和订阅者执行事务。在 Java 世界中,JMS 指定了此类事务。 JMS 实现的一个示例是 HornetQ .
RabbitMQ 不提供此类功能,但这样做是有充分理由的。 RabbitMQ 的构建是为了非常健壮并同时表现得像 hell 一样。您描述的事务行为只有以合理的性能损失为代价才能实现(特别是如果您想保持出色的稳健性)。
使用 RabbitMQ,确保消息被成功消费的一种方法确实是在消费者端发布一个应答消息,然后由原始发布者消费。这可以通过 RabbitMQ's RPC procedure calls 来实现这可能会帮助您为您的问题设置找到一个干净的解决方案。
如果(原始)发布者在收到所有答案之前崩溃,您可以假设所有未完成的答案仍在代理中排队。因此,您必须以能够恢复处理那些留下的消息的方式构建您的发布者。这可能不是微不足道的。
最后,我推荐以下解决方案:设计您的生产组件,以便您可以使用与原始发布者分离的一个或多个专用答案消费者来使用答案。
该解决方案的好处是:
关于rabbitmq - 消息总线 : sender must wait for acknowledgements from multiple recipients,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911588/
根据 /spring-kafka/docs/2.4.4.RELEASE/,关于 Kafka 的新功能,旨在否定确认,现在由 Spring-Kafka 支持。 “…… 从 2.3 版开始,Acknowl
我正在实现一个基于 kafka 的应用程序,我想在其中手动确认收到的消息。架构迫使我在一个单独的线程中完成它。 问题是:在与消费者不同的线程中执行 Acknowledgement.acknowledg
目前我使用服务器接收 GCP Pub/Sub 消息,我想执行 Purchase.Subscriptions:acknowledge调用以确认在服务器收到通知时尚未确认的订阅。 这是场景... 用户购
[!] 您的 Podfile 需要安装插件 cocoapods-acknowledgements。请安装它并再次尝试安装。 最佳答案 将其放入终端 gem install cocoapods-ackn
将我们的 Jenkins 主安装更新到最新的 LTS 版本 2.46.3 后,其从属设备之一(Windows 7 计算机,32 位)无法与主设备连接。 我们收到的错误是: java -jar slav
我想同时使用来自多个队列的jms消息。所有消息在长时间运行处理后都应该进入数据库,我无权丢失它们。 问题:是否可以保存消息以供将来确认,并在处理另一条消息时调用 oldMessage.acknowle
我有 N 个 tombcat 服务器监听一个 Tibco EMS 队列。我必须发送 N 条消息,每条消息必须由特定服务器处理(消息 1 必须由 tomcat 服务器 1 处理,...,消息 N 必须由
我一直在尝试提出一种 Camel 路线,可以从 activemq 中读取数据并将其写入 Oracle AQ。 但是,当消息成功写入 Oracle-aq 时,我必须将成功的消息写入另一个 Active
我是第一次使用 Spring Kafka,我无法在我的消费者代码中使用 Acknowledgement.acknowledge() 方法进行手动提交,如此处所述 https://docs.spring
我知道这个问题已经有人问过,但我找不到好的答案。每当我点击我制作的按钮时,一切似乎都正常,但我创建了多个 channel 。它应该只做一个。然后我得到这个错误。 代码: else if (intera
JMS session 到底意味着什么? JMS session 可以或不可以“事务处理”是什么意思? JMS session 可以或不可以“自动确认”是什么意思? 最佳答案 您可以将 JMS ses
private val DATABASE:String = config.getString("db.dbname") private val SERVER:ServerAddress = {
我已经在 MongoDB 数据库中存储了一个 pdf,我正在按如下方式访问它: dbPDFReports = client['pdfReports'] 客户端是我的 MongoClient 如下: c
CocoaPods 会自动为我使用过的所有项目生成一个很好的确认列表,以便我可以将这些信息包含在我的应用程序 UI 中。 整个 Android/Gradle 情况是否有类似的情况? 更一般地说,如何自
我正在开发一个连接到 Spring-MVC 服务器的 Java 应用程序,使用 Spring-Security 进行身份验证/授权。登录部分有效,我在 Java 应用程序中得到了一个 JSESSION
当在具有 AUTO_ACKNOWLEDGE 模式的 session 中调用 Message.acknowledge() 时,TIBCO 会发生什么情况? 我的意思是这个调用在客户端被忽略了吗?还是服务
我正在构建一个应用程序并希望将 cocoapods 自动生成的确认 Markdown 文件加载到一个 NSString 中以显示在我的应用程序中。我认为它会像这样做一样简单: NSString *pa
我正在使用 boost asio 通过 TCP 执行文件传输。文件传输有效,但是当我决定通过链接 async_write (在服务器上)和 async_read_until (在客户端上)实现从服务器
我正致力于在我正在编写的使用 Intel VT-x 虚拟化的 VMM 中支持发布中断。启用发布中断的文档中指定的 VM 进入要求之一是“退出时确认中断”VM 退出控制必须设置为 1。 当我将此控件设置
在我们的应用程序中,发布者创建一条消息并将其发送到一个主题。 然后它需要等待,当所有主题的订阅者都确认消息时。 它不会出现,消息总线实现可以自动执行此操作。因此,我们倾向于让每个订阅者在完成后向客户发
我是一名优秀的程序员,十分优秀!