【问题标题】:Spring RabbitMQ - xml configuration - manual ackSpring RabbitMQ - xml 配置 - 手动确认
【发布时间】:2017-12-22 10:40:51
【问题描述】:

我已经在 spring 中定义了 rabbit 的配置:

<rabbit:connection-factory id="amqpConnectionFactory" addresses="${amqp.host}:${amqp.port}"
                           thread-factory="rabbitThreadFactory"
                           cache-mode="CHANNEL"
                           channel-cache-size="25"
                           username="${amqp.user}"
                           password="${amqp.pass}"
                           virtual-host="${amqp.vhost}"/>

<rabbit:admin connection-factory="amqpConnectionFactory" id="rabbitAdmin"/>

<rabbit:topic-exchange id="motoTopicExchange" name="moto.ex.topic" >
    <rabbit:bindings>
        <rabbit:binding pattern="moto.*.speed" queue="motoQueue8"/>
        <rabbit:binding pattern="moto.*.tour" queue="motoQueue9"/>
        <rabbit:binding pattern="moto.*.naked" queue="motoQueue10"/>
    </rabbit:bindings>
</rabbit:topic-exchange>

<rabbit:queue id="motoQueue8" name="moto.queue.8"/>
<rabbit:queue id="motoQueue9" name="moto.queue.9"/>
<rabbit:queue id="motoQueue10" name="moto.queue.10"/>

<rabbit:template id="rabbitTemplate"
                 connection-factory="amqpConnectionFactory"
                 retry-template="retryTemplate"
                 message-converter="rabbitJsonConverter"/>

<bean id="rabbitJsonConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"/>

<rabbit:listener-container connection-factory="amqpConnectionFactory" message-converter="rabbitJsonConverter"
                           max-concurrency="10" acknowledge="auto">
    <rabbit:listener ref="amqpService8" method="handleSimple" queues="motoQueue8"/>
    <rabbit:listener ref="amqpService9" method="handleSimple" queues="motoQueue9"/>
    <rabbit:listener ref="amqpService10" method="handleSimple" queues="motoQueue10"/>
</rabbit:listener-container>

侦听器中的handleSimple方法在哪里消费对象,例如Motorcycle(发送思想amqp时也有json转换)。

  1. 如何手动确认传递给听众的按摩?
  2. 是否可以将 MessageHeader 与对象(摩托车)一起获取?

我不想配置监听器思想注释。

谢谢

【问题讨论】:

    标签: java spring rabbitmq spring-amqp spring-rabbit


    【解决方案1】:

    手动确认的愿望是什么?需要它们是很不寻常的。容器将为您处理。

    要使用手动确认,您需要一个 ChannelAwareMessageListener 实现。

    您还必须自己调用消息转换器。

    【讨论】:

    • 感谢您的确认 :) 只是想知道是否有“某些”配置允许使用 rabbit 命名空间
    • 实际上,我的错误 - 如果您的侦听器实现 ChannelAwareMessageListener,则由 rabbit: 命名空间配置的 MessageListenerAdapter 只是委托给您的侦听器。因此,您可以将其与命名空间一起使用。
    猜你喜欢
    • 2016-12-27
    • 2016-12-08
    • 2018-06-20
    • 2020-07-26
    • 2017-12-31
    • 2015-06-21
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多