Jackson2JsonMessageConverter etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Jackson2JsonMessageConverter etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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;
}