问题描述
我有 3 个 SpringBoot 项目:
- 生产者(消息的生产者)
- 消费者(消息的消费者)
- Commons(域对象共享 b/w Producer 和 Consumer)
消息类如下:
public class Message {
private String eventType;
private String Payload; //serialized
}
Payload 类如下:
public class Payload {
private DomainObjectA a;
private DomainObjectB b;
private DomainObjectC c;
private DomainObjectD d;
}
有 2 种类型的事件 CREATE 和 UPDATE,生产者应用程序可以根据事件的类型产生两种类型的消息(到 ActiveMQ)。
我需要在消费者项目中维护一个队列,该队列将接受两种事件的消息。
对于 CREATE 事件,我需要构建所有域对象,而对于 UPDATE 事件,只需要构建 DomainObjectA 和 DomainObjectB。
if("CREATE".equals(eventType)
{
build DomainObjectA;
build DomainObjectB;
build DomainObjectC;
build DomainObjectD;
set above objects in Payload object
set Payload from above in Message object
set CREATE as eventType in Message object
}
else if("UPDATE".equals(eventType)
{
build DomainObjectA;
build DomainObjectB;
set above objects in Payload object
set Payload from above in Message object
set UPDATE as eventType in Message object
}
目前,生产者需要根据事件类型知道在 Payload 中构建哪些域对象,因此这不是 TypeSafe(因为生产者可能会尝试设置不需要的域对象)。
如何使这种类型安全并有如下所示的解决方案:
public class Message {
private String eventType;
//want to make Payload dynamic depending on the eventType
// for CREATE eventType i want CreatePayload while for UPDATE i want UpdatePayload
private String Payload;
}
public class CreatePayload implements Serializable {
private DomainObjectA a;
private DomainObjectB b;
private DomainObjectC c;
private DomainObjectD d;
}
public class UpdatePayload implements Serializable {
private DomainObjectA a;
private DomainObjectB b;
}
感谢任何指点。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)