Giriş
Şu satırı dahil ederiz.
constructor
Şöyle yaparız.
Örnek - routingKey + Message
Burada default exchange'e gönderilir. Şöyle yaparız.
MessagePostProcessor yazısına taşıdım
Şu satırı dahil ederiz.
import org.springframework.amqp.rabbit.core.RabbitTemplate;
AmqpTemplate sınıfından kalıtır.constructor
Şöyle yaparız.
ConfigurableApplicationContext context = ...;
RabbitTemplate template = context.getBean(RabbitTemplate.class);
convertAndSend metoduÖrnek - routingKey + Message
Burada default exchange'e gönderilir. Şöyle yaparız.
template.convertAndSend("my.queue", new Foo());
Örnek - exchange + routingKey + message
Şöyle yaparız.public void send(Blog blog) { rabbitTemplate.convertAndSend(config.getExchange(), config.getRoutingkey(), blog);}
Örnek - exchange + routingKey + message + messagePostProcessor
send metodu
Örnek
Şöyle yaparız
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MessageSenderService {
private final RabbitTemplate rabbitTemplate;
@Autowired
public MessageSenderService(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
public void sendMessage(String message) {
MessageProperties properties = new MessageProperties();
// Set message as persistent
properties.setDeliveryMode(MessageDeliveryMode.PERSISTENT);
Message rabbitMessage = new Message(message.getBytes(), properties);
rabbitTemplate.send("my-exchange", "my-routing-key", rabbitMessage);
}
}
Açıklaması şöyleBy setting both the message delivery mode to PERSISTENT and declaring queues as durable, you ensure that messages sent to RabbitMQ are persisted, and even if RabbitMQ server restarts, the messages will not be lost.
Açıklaması şöyle
Ensure that your RabbitMQ queues are also declared as durable. You can do this by setting the durable attribute to true when declaring queues in your RabbitMQ configuration.RabbitMQ stores persistent messages in its storage mechanism, which typically consists of regular filesystem storage on the server where RabbitMQ is running. RabbitMQ stores persistent messages on the server’s disk in a location specified by its configuration. This location is usually within the RabbitMQ data directory.
setExchange metodu
RabbitTemplate sınıfının sadece send() metodunu kullanabilmek için önce RabiitTemplat nesnesini sabit olarak bir exchange'e bağlamak gerekir.
RabbitTemplate sınıfının sadece send() metodunu kullanabilmek için önce RabiitTemplat nesnesini sabit olarak bir exchange'e bağlamak gerekir.
Örnek
Şöyle yaparız
setMessageConverter metodu
Eğer bir MessageConverter atanmadıysa, RabbitTemplate Java Binary Serialization yöntemini kullanır.
@Bean
public RabbitTemplate rubeExchangeTemplate() {
RabbitTemplate r = new RabbitTemplate(this.rabbitConnectionFactory);
r.setExchange("rmq-exchange");
r.setMessageConverter(jsonMessageConverter());
return r;
}
Örnek
Şöyle yaparızz
@Autowired
private RabbitTemplate rabbit;
@Autowired
private MessageConverter jsonMessageConverter;
public void produce() {
rabbit.setExchange("My.Exchange");
rabbit.setRoutingKey("R.K");
rabbit.setMessageConverter(jsonMessageConverter);
MessageProperties props = new MessageProperties();
props.setExpiration(Long.toString(expiration));
Message toSend = new Message(message.toString().getBytes(), props);
rabbit.send(toSend);
}
Eğer bir MessageConverter atanmadıysa, RabbitTemplate Java Binary Serialization yöntemini kullanır.
JSON olarak göndermek için Jackson2JsonMessageConverter kullanılır.
Hiç yorum yok:
Yorum Gönder