我们使用 Quarkus Messaging(带有“smallrye-jms”扩展以连接到 IBM MQ)和转换器将以字符串形式接收的消息转换为 Java 对象。
当在“queue_A”中接收到传入消息时,我们必须在以下两个目的地之一中生成消息:
- “queue_A_error”:如果在转换传入消息时遇到问题。此目标中要生成的新消息是有效负载为 JSON 格式的字符串的消息(包含原始有效负载以及遇到的所有错误的列表)。
- “queue_B”:包含以 JSON 序列化的原始对象的消息
我们如何使用 Quarkus Messaging 实现这个错误处理用例?
你可以做这样的事情:
注意,我没有测试过这段代码,我希望它对你有帮助。
编辑:@JYC,我发现也可以拦截传入的消息,请参阅此链接:https://smallrye.io/smallrye-reactive-messaging/4.25.0/concepts/decorators/#incominginterceptor
如果您想全局实施错误处理,这会很方便。
编辑2:另一个选项是配置DLQ:
mp.messaging.incoming.your-channel-name.dead-letter-queue=your-dead-letter-queue-name
您还可以使用多个传出渠道检查
Targeted
消息。您需要在传入方法中使用 try-catch 进行错误处理。