Difference between revisions of "Spring RabbitMQ cheat sheet"

From DarkWiki
Jump to: navigation, search
(Created page with "===Sending to topics=== On the ''Producer'' side (the one that raises the events) we create our TopicExchange, giving it a sensible name: <source lang="java"> import org.spr...")
 
Line 18: Line 18:
 
}
 
}
 
</source>
 
</source>
 +
 +
It can then be used by our ''Producer'' to send event notifications to anyone who subscribes to the exchange:
 +
 +
<source lang="java">
 +
@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);
 +
    }
 +
}
 +
</source>
 +
 +
You can then send EventMessage payloads with event ids such as "event.user.deleted".

Revision as of 16:24, 2 April 2020

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".