Spring RabbitMQ cheat sheet

From DarkWiki
Revision as of 16:24, 2 April 2020 by Apowney (talk | contribs)
Jump to: navigation, search

Sending to topics

On the Producer side (the one that raises the events) we create our TopicExchange, giving it a sensible name:

import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class EventProducerConfig {

    @Bean("eventExchange")
    public TopicExchange eventExchange() {
        return new TopicExchange("eventExchange");
    }

}

It can then be used by our Producer to send event notifications to anyone who subscribes to the exchange:

@Component
public class EventProducer {
    private final RabbitTemplate rabbitTemplate;
    private final Exchange exchange;

    public EventProducer(RabbitTemplate rabbitTemplate,@Qualifier("eventExchange") Exchange exchange) {
        this.rabbitTemplate = rabbitTemplate;
        this.exchange = exchange;
    }

    public void signal(String eventId,EventMessage message) {
        rabbitTemplate.convertAndSend(exchange.getName(), eventId, message);
    }
}

You can then send EventMessage payloads with event ids such as "event.user.deleted" using the signal method.