我正在从 Spring AMQP inetgration 从 2.2.3.RELEASE 迁移到 5.5.20。 这是我的 mvn 依赖树矩阵。
[INFO] | +- org.springframework.integration:spring-integration-stream:jar:5.5.20:compile
[INFO] | +- org.springframework.integration:spring-integration-amqp:jar:5.5.20:compile
[INFO] | | \- org.springframework.amqp:spring-rabbit:jar:2.3.16:compile
[INFO] | | +- org.springframework.amqp:spring-amqp:jar:2.3.16:compile
[INFO] | | \- com.rabbitmq:amqp-client:jar:5.9.0:compile
根据文档,它应该按预期工作,并且文档还引用相同版本的签出 xml 配置。 https://docs.spring.io/spring-integration/docs/5.5.20/reference/html/amqp.html#amqp-inbound-channel-adapter
表示所有属性在最新版本中仍然存在。
<int-amqp:inbound-channel-adapter
id="amqpAdapter" channel="amqpChatQ"
queue-names="${amqp.queue.v1}" connection-factory="connectionFactory"
auto-startup="true" concurrent-consumers="${amqp.consumer.count}"
channel-transacted="true" task-executor="taskExecutor"
prefetch-count="2" tx-size="2" acknowledge-mode="AUTO"
error-handler="messageErrorHandler" />
但我在那里提到了一些文档,其中说tx-size =“2”已被弃用并移至batch-sizehttps://github.com/spring-projects/spring-integration/issues/9695
但如果我使用 batch-size 则不允许使用
仍然无法弄清楚如何使用文档,如果有人提供一些输入将会非常有帮助。
如果我们有这样的配置,可以吗?我没有看到任何问题
<bean id="customAmqpListenerContainer" class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="autoStartup" value="true" />
<property name="queueNames" value="${amqp.queue.v1}" />
<property name="concurrentConsumers" value="${amqp.consumer.count}" />
<property name="channelTransacted" value="true" />
----
</bean>
<int-amqp:inbound-channel-adapter
id="amqpAdapter"
channel="amqpChatQ"
listener-container="customAmqpListenerContainer" />
您提到的修复是新的,实际上不属于 Spring Integration
5.5.20
。这个版本已经很长时间不再支持了。考虑升级到最新支持的版本:https://spring.io/projects/spring-integration#learn。
是的,
listener-container
参考完全取代了所有这些单独的属性。我相信你真的可以在 batchSize
bean 定义上使用 SimpleMessageListenerContainer
属性。
这在某种程度上与您的其他问题相关:将 spring 从 4.x 迁移到 5.x 和 jdk 17。有人可能会发现这是您的新产品的重复品。我不知道为什么你接受答案,因为我们在那里讨论的问题已经解决了。即使您仍然遇到一些问题,这也不是社区的运作方式。范围越短,对于任何面临类似问题的人来说就越容易消化。删除答案可能会误导社区,并会提出另一个问题。