繁体   English   中英

重试相同消息但未发送给dlq

Same message being retried and not sent to dlq

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我定义了一个队列blah.queue,并为其定义了死信路由键。 但是,当我收到带有失败的异常失败消息时,该消息将重新排队并重新尝试(在无限循环中)。 我希望在重试3次之后,该消息应该与死信路由键一起放在交换机上。 但这似乎没有发生。

我有以下设置:

    <rabbit:queue name="blah.queue" auto-delete="false" durable="true">
    <rabbit:queue-arguments>
        <entry key="x-dead-letter-exchange" value="" />
        <entry key="x-dead-letter-routing-key" value="blah.queue.dlq.route" />
        <entry key="x-ha-policy" value="all" />
    </rabbit:queue-arguments>
</rabbit:queue>
<rabbit:direct-exchange name="${rabbit.idesk.exchange}">
    <rabbit:bindings>
        <rabbit:binding queue="blah.queue" key="blah.route" />
    </rabbit:bindings>
</rabbit:direct-exchange>

<bean id="myConsumer" class="com.ankit.CustomConsumer" />

<bean id="myConsumerMessageListenerAdapter" class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter">
    <constructor-arg ref="myConsumer" />
    <constructor-arg ref="myMessageConverter" />
</bean>

<bean id="myConsumerMessageListenerContainer" class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
    <property name="queueNames" value="blah.queue" />
    <property name="connectionFactory" ref="queueConnectionFactory" />
    <property name="messageListener" ref="myConsumerMessageListenerAdapter" />
    <property name="errorHandler" ref="loggingErrorHandler" />
    <property name="adviceChain">
        <list>
            <ref bean="retryAdvice" />
        </list>
    </property>
</bean>

<bean id="loggingErrorHandler" class="org.springframework.scheduling.support.TaskUtils.LoggingErrorHandler" />

<bean id="myMessageConverter"
    class="org.springframework.amqp.support.converter.JsonMessageConverter">
    <property name="classMapper">
        <bean class="com.ankit.queue.mapper.NamedClassMapper">
            <constructor-arg
                value="com.ankit.dto.EventDTO" />
        </bean>
    </property>
    <property name="createMessageIds" value="true" />
</bean>

<bean id="retryAdvice" class="org.springframework.amqp.rabbit.config.StatefulRetryOperationsInterceptorFactoryBean">
    <property name="messageRecoverer" ref="rejectAndDontRequeueRecoverer" />
    <property name="retryOperations" ref="retryTemplate" />
</bean>

<bean id="retryTemplate" class="org.springframework.retry.support.RetryTemplate">
    <property name="retryPolicy" ref="simpleRetryPolicy" />
    <property name="backOffPolicy">
        <bean class="org.springframework.retry.backoff.FixedBackOffPolicy">
            <property name="backOffPeriod" value="5000" />
        </bean>
    </property>
</bean>

<bean id="simpleRetryPolicy" class="org.springframework.retry.policy.SimpleRetryPolicy">
    <property name="maxAttempts" value="3" />
</bean>
1 个回复

您没有看到恢复器发出的WARN消息吗?

@Override
public void recover(Message message, Throwable cause) {
    if (this.logger.isWarnEnabled()) {
        this.logger.warn("Retries exhausted for message " + message, cause);
    }
    throw new ListenerExecutionFailedException("Retry Policy Exhausted",
                new AmqpRejectAndDontRequeueException(cause), message);
}

打开调试日志记录以观察重试行为。

1 ActiveMQ消息入队但未发送给使用者

我正在使用activemq 5.13和代理网络配置。 我有一个队列,该队列在很长一段时间内都正常运行(几天后,邮件正常入队和出队)。 一段时间后,使用者似乎停止了从队列中取出消息。 代理jmx显示使用者仍在队列上侦听(“ ConsumerCount”:1),并且我检查线程状态为WAITI ...

2 Mailgun已接受,但未发送给具有相同域的电子邮件地址

与我的Mailgun域相同的域的电子邮件地址接受电子邮件,但不发送。 当发送到其他域的电子邮件地址时,它可以成功传递。 例如; 如果我的Mailgun域是mydomain.com,则Mailgun无法发送test@mydomain.com。 (也不能以密件抄送方式将其发送到与Mailgun域相 ...

3 Gcm消息未发送给超过1000个用户

gcm消息不会发送给1000个以上的用户,gcm有将消息发送给1000个用户的限制,因此我的想法是将每一个用户分成1000个,我尝试过,但是gcm消息只能被前1000个用户接收我们每千个批量发送消息,总共说5000个用户,以便所有用户都收到消息,我是php新手,请说明其工作原理 ...

4 MassTransit RabbitMq调度消息未发送给使用者

我想使用MassTransit + RabbitMq总线调度来自总线的消息。 我编写了两个C#控制台应用程序,一个用于消息创建者并将消息发送到预定的时间,另一个用于消息使用者。 下面的代码用于在总线中进行调度,以便每秒将消息发送到调度程序一次,然后调度程序以10秒的延迟发送给使用者。 ...

6 推送已发送到数据库,但未发送给用户

我正在尝试向用户发送推送通知。 我目前可以发送针对用户的推送,以进行分析,但不会将其发送给用户。 用户已在安装类中注册。 下面是我的代码,用于在分析网站上发送推送和错误。 http://puu.sh/m0y7j/460b9f3ad8.png ...

7 角度的http.post被发送给PHPSESSID cookie…但未发送回

我是AngularJS(不是第2版)的新手,我有一个单页应用程序,该应用程序在站点X上调用(POST)PHP脚本,并显示数据。 我正在使用Angular JS v1.5.7,但没有使用其他任何工具(例如,引导程序)。 一切正常。 我通过使用jquery.ajax向其添加了身份验证,这很 ...

8 nodemailer 发送电子邮件但未发送给收件人

Nodejs 应用程序发送电子邮件,响应成功。 但是收件人没有收到电子邮件。 有一段时间我一直在使用相同的代码。 它正在发送电子邮件,并且电子邮件也会发送给收件人。 但最近我发现,相同的代码发送了电子邮件,但没有发送。 我已在作为发件人 ID 的 Gmail 帐户中设置了对不太安全的应用程序设置的 ...

10 Laravel邮件未发送给用户

我试图通过按钮单击将邮件发送给用户。 管理员将批准或拒绝该用户。 控制器: 梅勒: 邮件模板 我检查了我的邮件配置和罚款。 在我的其他功能中,邮件正常发送,但在这封邮件中,我使用的是SMTP。 任何人都可以帮我解决这个问题。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM