如何使用 Spring XML 实现 x-consistency-hash-exchange

问题描述 投票:0回答:1

所有其他交换类型均在 http://www.springframework.org/schema/rabbit 模式中声明,但在其中找不到 x-consistent-hash-exchange。在哪里定义的?

我尝试在 XML 中实现一致的哈希交换,但是,这是我尝试使用 Rabbit 模式中的 if 后遇到的异常:

线程“main”中的异常 org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: URL [file:/conf/spring/mq-admin.xml] 中 XML 文档中的第 64 行是 无效的;嵌套异常是 org.xml.sax.SAXParseException; 行号:64;列数:84; cvc-complex-type.2.4.c:匹配 通配符是严格的,但找不到元素的声明 '兔子:x-一致性哈希交换'

rabbitmq spring-amqp spring-rabbit
1个回答
0
投票

确实如此,

ConsistentHashExchange
没有自定义 XML 标签。

最后所有这些标头都声明了一些 bean 定义。

对于这个来说,这样做就足够了:

<beans:bean id="myConsistentHashExchange" class="org.springframework.amqp.core.ConsistentHashExchange">
    <beans:constructor-arg name="name" value="myConsistentHashExchange"/>
    <beans:property name="hashHeader" value="myHashHeader"/>
</beans:bean>

我们没有计划扩展 XML 支持。

更新

对于

3.2
之前的版本,我们必须使用
CustomExchange
来定义bean:

<beans:bean id="myConsistentHashExchange" class="org.springframework.amqp.core.CustomExchange">
    <beans:constructor-arg name="name" value="myConsistentHashExchange"/>
    <beans:constructor-arg name="type" value="x-consistent-hash"/>
    <beans:constructor-arg name="durable" value="true"/>
    <beans:constructor-arg name="autoDelete" value="true"/>
    <beans:constructor-arg name="arguments">
        <beans:map>
            <beans:entry key="hash-header" value="myHashHeader"/>
        </beans:map>
    </beans:constructor-arg>
</beans:bean>

结果是这样的:

enter image description here

注意:必须在代理上启用

rabbitmq_consistent_hash_exchange
插件:https://github.com/rabbitmq/rabbitmq-server/tree/main/deps/rabbitmq_consistency_hash_exchange

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.