Reputation: 813
I'm using spring cloud stream versione 3.1.4, and this is my producer
@Component
public class Producer {
@Autowired
private StreamBridge streamBridge;
public void produce(int messageId, Object message) {
Message<Object> msg= MessageBuilder
.withPayload(message)
.setHeader("partitionKey", messageId)
.build();
streamBridge.send("outputchannel-out-0", msg);
}
@ServiceActivator(inputChannel = "errorchannel.errors")
public void errorHandler(ErrorMessage em) {
log.info("Error: {}", em);
}
}
Into application.yaml I set errorChannelEnabled
spring:
cloud:
stream:
bindings:
#Channel name
outputchannel-out-0:
destination: my-topic
contentType: application/json
producer:
partitionKeyExpression: headers['partitionKey']
partitionCount: 1
errorChannelEnabled: true
Now, If I change the produce()
method in this way, in order to test the error handler
public void produce(int messageId, Object message) {
throw new RuntimeException("Producer error");
}
Nothing happens. Error handler is not triggered. I'm not sure that it's the right way to setup the error handler in spring cloud stream 3.1.4.
Can you help me?
Upvotes: 1
Views: 522
Reputation: 174494
errorchannel.errors
does not exist.
There are two error channels errorChannel
is the global error channel; the binding-specific error channel is named <destination>.<group>.errors
. You don't currently have a group.
Upvotes: 1