gpt4 book ai didi

java - spring集成jms channel 设置并发消费者导致数据损坏

转载 作者:行者123 更新时间:2023-12-01 20:18:39 25 4
gpt4 key购买 nike

我正在使用 Spring Integration jms channel 来使用队列中的消息并对其进行处理。

这是我的 inbound-channel-config.xml

<jms:message-driven-channel-adapter id="jmsIn"
destination="requestQueue"
channel="routingChannel"
connection-factory="cachingConnectionFactory"
error-channel="errorChannel"
concurrent-consumers="${jms_adapter_concurrent_consumers}" />

这里,当我将并发消费者设置为大于 1 的值时,我使用的消息在处理时会被损坏。我正在使用队列中的 XML 和 Json 消息,在解析数据时,我可以看到它的一些内容已更改并设置为某个随机值。

仅当并发消费者值设置为 1 时,上述配置才能正常工作。

我的问题是,当我将并发消费者设置为大于 1 的值时,是否必须手动同步(使线程安全)我的代码?

最佳答案

是的,您的代码必须是线程安全的。任何多线程代码都是如此。

但是,同步整个事情将有效地击败并发性。最好使用无状态代码(无字段),或使用线程安全变量(AtomicInteger 等),或将同步限制为小块。

如果同步整个监听器代码,则一次只能处理一个容器线程。

关于java - spring集成jms channel 设置并发消费者导致数据损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45271150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com