Şu satırı dahil ederiz
import org.springframework.amqp.core.MessagePostProcessor;
Açıklama şöyle.
Used in several places in the framework, such as AmqpTemplate#convertAndSend(Object, MessagePostProcessor) where it can be used to add/modify headers or properties after the message conversion has been performed.
Örnek - Header Değeri Atamak
Elimizde şöyle bir kod olsun
public class MyMessagePostProcessor implements MessagePostProcessor {
private final Integer ttl;
public MyMessagePostProcessor(final Integer ttl) {
this.ttl = ttl;
}
@Override
public Message postProcessMessage(final Message message) throws AmqpException {
message.getMessageProperties().getHeaders().put("expiration", ttl.toString());
return message;
}
}
Şöyle yaparız. Birinci parametre exchange ismi, ikinci parametre routingkey, üçüncü parametre mesaj verisi, dördüncü parametre MessagePostProcessor nesnesi
inal String message = "message";
final MessagePostProcessor messagePostProcessor = new MyMessagePostProcessor(10000);
rabbitTemplate.convertAndSend("my.queue", "routingKey", message, messagePostProcessor);
Örnek - Property Değeri Atamak - Persistent Olmayan Mesaj
Açıklaması şöyle
The default delivery mode (in MessageProperties) is PERSISTENT.
To make it non-persistent you need to use a convertAndSend(...) method with a MessagePostProcessor to set the deliveryMode property.
Örnek - Property Değeri Atamak
Şöyle yaparız. Birinci parametre exchange ismi, ikinci parametre routingkey, üçüncü parametre mesaj verisi, dördüncü parametre MessagePostProcessor nesnesi
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.amqp.support.converter.SimpleMessageConverter;
// bad json
template.setMessageConverter(new SimpleMessageConverter());
template.convertAndSend("", "my.queue", "\"routeId\":\"7\"}", m -> {
m.getMessageProperties().setContentType("application/json");
return m;
});
Hiç yorum yok:
Yorum Gönder