14 Kasım 2018 Çarşamba

Spring Amqp Jackson2JsonMessageConverter Sınıfı

Giriş
Bu sınıfın dışında bir de JsonMessageConverter sınıfı var. Bu sınıf Jackson 2 kütüphanesini kullanır.

Bu converter şu header'ları kullanır. Bu yüzden HashMap<Foo, Bar> gibi bir şey çevirebilir.
public static final String DEFAULT_CLASSID_FIELD_NAME = "__TypeId__";

public static final String DEFAULT_CONTENT_CLASSID_FIELD_NAME = "__ContentTypeId__";

public static final String DEFAULT_KEY_CLASSID_FIELD_NAME = "__KeyTypeId__";
constructor
Örnek
Mesajları JSON olarak göndermek için şöyle yaparız.
@Bean
public MessageConverter jsonMessageConverter() {
  return new Jackson2JsonMessageConverter();
}

public AmqpTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
  final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
  rabbitTemplate.setMessageConverter(jsonMessageConverter());
  return rabbitTemplate;
}
setClassMapper metodu
Örnek
Sadece Foo sınıfını JSON'a çevirmek, diğer sınıfları reddetmek için şöyle yaparız. Eğer başka bir tipi çevirmeye çalışırsak org.springframework.amqp.support.converter.MessageConversionException fırlatır
@Bean
public MessageConverter jsonConverter() {
  Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter();
  DefaultClassMapper mapper = new DefaultClassMapper();
  mapper.setDefaultType(Foo.class);
  converter.setClassMapper(mapper);
  return converter;
}

Hiç yorum yok:

Yorum Gönder