【发布时间】:2018-06-21 11:15:48
【问题描述】:
我有一个带有属性的配置服务器和一个作为消费者的微服务。
我尝试配置 maxAttempts 以避免消费者微服务重试,但它似乎不起作用。
我还在配置服务器上定义了绑定属性,它们工作正常。我的消费者正在收听和接收消息,但它尝试了 3 次然后崩溃。
这是我的配置服务器中的 application.yml
server:
servlet:
contextPath: /cmsrsssitemap/v1
spring:
cloud:
stream:
bindings:
sitemap-main-output:
destination: sitemap-main
group: cms-microservices-v1
content-type: application/json
#consumer.concurrency: 2
test-job-output:
destination: test-job
group: cms-microservices-v1
content-type: application/json
rabbit:
bindings:
test-job-output:
consumer:
maxAttempts: 1
requeueRejected: false
autoBindDlq: true
#dlqTtl: 5000
#requeueRejected: false
#dlqDeadLetterExchange: dltexchange1
#republishToDlq: true
这是生产者端的application.yml
server.servlet.contextPath: /cmsjmshandler/v1
spring:
cloud:
stream:
bindings:
sitemap-main-input:
destination: sitemap-main
content-type: application/json
test-job-input:
destination: test-job
group: cms-microservices-v1
content-type: application/json
这就是监听器。它抛出一个 NullPointer 用于测试目的
@Component
public class TestJobListener {
@StreamListener(StreamProcessor.TEST_JOB)
public void testJobInput(@Payload String input) throws InterruptedException {
// Thread.sleep(3000);
System.out.println("########################### "+new Date() + " Mensaje Recibido");
throw new NullPointerException();
}
}
StreamProcessor.java
public interface StreamProcessor {
public static final String TEST_JOB = "test-job";
public static final String SITEMAP_MAIN = "sitemap-main";
@Input(StreamProcessor.TEST_JOB)
SubscribableChannel testJobOutputInput();
@Input(StreamProcessor.SITEMAP_MAIN)
SubscribableChannel processSitemapMain();
}
这样做的目的是将失败的消息移动到 DLQ,但它也不起作用
编辑 1:无法使其工作。我已经根据 Artem Bilan 进行了更改,但它也不起作用。
server:
servlet:
contextPath: /cmsrsssitemap/v1
spring:
cloud:
stream:
bindings:
test-job-output:
destination: test-job
group: cms-microservices-v1
content-type: application/json
consumer:
maxAttempts: 1
rabbit:
bindings:
test-job-output:
consumer:
requeueRejected: false
【问题讨论】:
标签: spring rabbitmq spring-cloud-stream