抱歉,我需要先解释一下,然后再谈这个问题。
异步:
我可以使用Kafka producer async send with with callback,如果向Kafka发送消息时出现错误,那么通知JMS使用者不确认消息消耗将为时已晚。为了克服这个问题,我想出的唯一办法是,如果有异常,在回调中保留消息,然后尝试稍后发送消息。但我认为那会是太多的开销。
有没有其他方法可以使用异步调用来处理这种情况?
使用同步调用,对Producer.send()返回的future调用get(),如果在向Kafka发送消息时出现任何问题,就会引发异常,并且可以将异常报告给JMS消费者,这样它就不会确认消息并在以后重试它。
很明显,这将对性能产生影响,因为这将是一个阻塞调用,而且糟糕的是,由于Kafka将确认每条消息,因此不会对消息进行批处理。
我倾向于同步调用,因为我不想要额外的持久性。
有没有什么方法或配置,我可以使用同步调用,并最大限度地减少同步调用的影响?我所做的一个配置是拥有一个JMS消费者池。
异步道:
除了坚持,别无他法。你要为表现做一个交易。
您收到了来自JMS的消息。承认你读了。当试图推到Kafaka的一个话题时,由于某种原因失败了。您需要做两件事,这是可靠的。
我不确定在这种情况下你怎样才能提高性能。如果性能在应用程序中不是问题,我建议您采用这种方法,因为这是最快和最简单的方法。
我不明白你坚持回调是什么意思。如果您的意思是将消息存储在内存中,这是一个坏主意,因为如果应用程序由于某种原因关闭或停止,您将丢失消息。
面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。 如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。 面试题剖
主要内容:一、前情提示,二、ack机制回顾,三、ack机制实现原理:delivery tag,四、RabbitMQ如何感知到仓储服务实例宕机,五、仓储服务处理失败时的消息重发,六、阶段总结一、前情提示 上一篇文章《MQ保证读写消息不丢失,这个你都不会就等着被开除吧...》我们初步介绍了之前制定的那些消息中间件数据不丢失的技术方案遗留的问题。 一个最大的问题,就是生产者投递出去的消息,可能会丢失。 丢失的原因有很多,比如消息在网络传输到一半的时候因为网络故障就丢了,或者是消息投递到MQ的内存时,M
由于内容脚本在网页而不是扩展程序的上下文中运行,因此它们通常需要某种与扩展程序其余部分进行通信的方式。例如,RSS 阅读器扩展程序可以使用内容脚本来检测页面上 RSS 摘要的存在,然后通知后台页面以显示该页面的操作图标。 扩展及其内容脚本之间的通信使用消息传递来实现。任何一方都可以监听从另一端发送的消息,并在同一通道上进行响应。消息可以包含任何有效的 JSON 对象(空,布尔值,数字,字符串,数组
ms tcp nodelay 描述: 在信差的 TCP 会话上禁用 nagle 算法。 类型: Boolean 是否必需: No 默认值: true ms initial backoff 描述: 出错时重连的初始等待时间。 类型: Double 是否必需: No 默认值: .2 ms max backoff 描述: 出错重连时等待的最大时间。 类型: Double 是否必需: No 默认值: 15
消息传递 目录 一次简单的请求 h3Name 长时间保持连接 h3Name 扩展之间的消息传递 h3Name 安全策略 h3Name 范例 h3Name API reference Properties propertyName Methods methodName Events eventName Types id For information on how to use experiment
我正在尝试用spring cloud stream实现spring cloud契约。我有一个使用StreamBridge的制作人 方法sendMessage()是从rest控制器调用的。 我的合同是这样的: 当我运行测试时,会调用triggerCreateOrganization()方法,并在日志中看到日志消息“生产组织到主题”。 我在生成的测试的基类上有@AutoConfigureMessage