我在一个项目中,我们通过springcloudstream使用springboot和java(1.8lts)以及kafka。我通过云流得到一个事件,并将其保存到mongodb。
我的 StreamListener
看起来像这样:
@StreamListener(MessagingChannels.BLA_CHANNEL)
public void onIncomingEvent(
EventContent eventContent,
@Header(name = uuid) UUID messageId
) {
doStuffWith(eventContent);
}
``` `EventContent` 看起来像这样:
@ToString
@AllArgsConstructor
@Getter
@JsonNaming
public class EventContent {
private final String dataString1;
private final String dataString2;
...
private final Object details;
}
我的问题是,details对象可能不同,producer可能有其他键/值对。一些生产商在snake\u案例中发送数据,但我希望在camelcase中保持一致。所以呢 `@JsonNaming` 这样做很好,但遗憾的是不能传递细节对象。
在这里容错是很重要的,所以如果这里发生了故障,应该发送给dlq。
有人知道我是怎么做的吗?也许有一个简单的方法可以用一个spring魔法注解,我不知道-spring新手:)
谢谢!!
1条答案
按热度按时间6l7fqoea1#
您应该配置两个不同的objectmapper:一个用于带有objectmapper.setpropertynamingstrategy(propertynamingstrategy.snake\u case)的kafka,另一个用于不带此选项的mongodb。