Wednesday, March 15, 2017

Messaging using RabbitMQ and Spring boot

Install RabbitMQ

brew install rabbitmq
PATH=$PATH:/usr/local/sbin

Start the server: rabbitmq-server

Go to home page of rabbit mq
http://localhost:15672/




Provide default userid & password: 
guest/guest

You will be able to login to the Rabbit MQ console to see the traffic and other details. 

Sending a message from the Spring boot application. 
Include the dependency in the Gradle / maven. 
compile('org.springframework.boot:spring-boot-starter-amqp')


ProducerCode: 
/**
 * Created by deiveehannallazhagappan on 3/15/17.
 */
@Service
public class ProducerService {
    private RabbitTemplate rabbitTemplate;

    public ProducerService(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    public void sendMessage(String messageToBeSent) {
        rabbitTemplate.convertAndSend("deiveeQueue", messageToBeSent);
    }

    @Bean
    public Queue queue() {
        return new Queue("deiveeQueue", false);
    }
}


Create a controller which will trigger sending message to the queue. 
@RestController
public class ProducerController {

    @Autowired
    private ProducerService producerService;

    @RequestMapping("/queue/sendMessage/{messageToBeSent}")
    public String sendMessageToQueue(@PathVariable("messageToBeSent") String messageToBeSent) {

        String timestamp = new SimpleDateFormat("HH:mm:ss").format(new Date());

        producerService.sendMessage(timestamp + ": " + messageToBeSent);
        return "Sent message - " + messageToBeSent + " to the queue";
    }
}



ConsumerCode: 
@Service
public class ConsumerService {
    private RabbitTemplate rabbitTemplate;

    public ConsumerService(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    @RabbitListener(queues = "deiveeQueue")
    public void processMessage(String message) {
        System.out.println(message);
    }

    @Bean
    public Queue queue() {
        return new Queue("deiveeQueue", false);
    }
}

Send the message by hitting the url



View the message in the console: 




More: 
Changing the default userid and password: