Quarkus 反应式消息传递 - 异常处理程序

问题描述 投票:0回答:1

我们使用 Quarkus Messaging(带有“smallrye-jms”扩展,以便连接到 IBM MQ)和转换器,将字符串中收到的消息转换为 Java 对象。

当在“queue_A”中接收传入消息时,我们必须在以下 2 个目的地之一生成消息:

  • “queue_A_error”:如果传入消息的转换过程中遇到问题。在此目标中要生成的新消息是一条消息,其负载是 JSON 格式的字符串(包含原始负载以及遇到的所有错误的列表)。
  • “queue_B”:包含以 JSON 序列化的原始对象的消息

我们如何使用 Quarkus Messaging 实现此错误处理用例?

jms quarkus ibm-mq quarkus-reactive smallrye-reactive-messaging
1个回答
0
投票

你可以这样做:

@Inject @Channel("queue_A_error") 
Emitter<MyErrorMsg> emitter;

@Inject 
ObjectMapper mapper;

@Incoming("incoming_queue")
@Outgoing("queue_B")
public MyMessage handleMsg(String payload) {
  try {
     return this.mapper.readValue(payload, MyMessage.class);
  } catch (Exception e) {
     this.emitter.send(new MyErrorMsg(payload, e));
     return null;
  }
}

注意,我没有测试此代码,希望它对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.