当前位置: 首页 > 知识库问答 >
问题:

Spring集成:避免丢失消息的状态

濮阳原
2023-03-14

如果Spring集成通道是用任务执行器定义的,那么线程池将用于处理传入的消息。如果service activator或transformerendpoint组件从该内部通道接收消息,是否会实例化一个endpoint组件池,每个线程一个?如果这不是默认行为,那么需要什么配置来实现这一点?

这一点很重要,原因有二:

>

以确保endpoint组件在内部通道使用的同一线程中处理消息,因此它们是同一事务的一部分。如果是这种情况,并且通道使用JMS持久化,消息将不会丢失。否则,如果终结点在单独的事务中运行,那么一旦消息被传递到终结点组件,如果出现JVM故障,则消息被保存在通道上的事实将无济于事。

谢谢

共有1个答案

秦胡媚
2023-03-14

否;每个endpoint都有一个实例,与输入通道中的线程无关。

  1. 通过精心设计服务(通常是使其无状态),可以避免“瓶颈”
  2. 不清楚你的意思;如果通道由JMS支持,那么输出端的每个线程都可以获得自己的事务,并且在服务失败时,mesages将回滚到队列中。这与简单的executor通道完全不同(对于它,事务永远无法工作,拥有单独的实例也没有帮助)

如果你能描述一个特定的用例/配置,也许有人能提供一些建议。

 类似资料:
  • 本文向大家介绍RabbitMQ 怎么避免消息丢失?相关面试题,主要包含被问及RabbitMQ 怎么避免消息丢失?时的应答技巧和注意事项,需要的朋友参考一下 把消息持久化磁盘,保证服务器重启消息不丢失。 每个集群中至少有一个物理磁盘,保证消息落入磁盘。

  • 寻找设计我的Kafka消费者的最佳方法。基本上,我想看看什么是避免数据丢失的最佳方法,以防在处理消息期间出现任何异常/错误。 我的用例如下。 a)我使用SERVICE来处理消息的原因是 - 将来我计划编写一个ERROR处理器应用程序,该应用程序将在一天结束时运行,它将尝试再次处理失败的消息(不是所有消息,而是由于任何依赖项(如父级缺失)而失败的消息)。 b)我想确保没有消息丢失,所以我会将消息保存

  • 我是Spring集成的新手,正在研究一个从单个通道向多个通道发送消息的示例,从这个角度来看,为每个通道使用Redis消息存储,目的是不丢失任何消息。要求将消息发送到通道-replyChannel、mailChannel和dbChannel。目前,代码只打印sysout语句,没有主要功能。 为了检查消息是否被正确路由,我编写了一个java测试类来发送15条消息。 检查输出,我发现一些消息正在丢失。也

  • 我正在使用Docker启动一个kafka代理集群(例如,5个代理,每个容器一个代理)。Kafka版本2.12-0.11.0.0,动物园管理员3.4.10。 场景: null > 在独立模式下启动Zookeeper,然后启动kafka 创建主题 null 检查邮件 消息被累犯 null null server.properties(broker.id唯一,broker_ip:broker_port对

  • 我有一个集成应用程序,大部分工作,但注意到昨天一个消息丢失了。当时,service-activatorendpoint正忙于处理先前的消息。 以下是适用于该问题的配置。

  • 所以我和我的Kafka消费者之间有了一些恼人的矛盾。我使用“Kafka节点”为我的项目。我创造了一个话题。在一个使用者组中通过2台服务器创建了2个使用者。自动提交设置为false。对于我的消费者获得的每一个mesaage,他们会启动一个异步进程,该进程可能需要1~20秒,当进程完成时,消费者会提交偏移量。我的问题是:在一个senarios中,消费者1得到一个消息,需要20秒来处理。在过程中间,他得