Arşivler

RabbitMQ Direct Exchange Java Publisher / Consumer Uygulaması

RabbitMQ Dersleri
RabbitMQ Dersleri

RabbitMQ Dersleri‘ne devam ediyorum.

Önceki Dersimde RabbitMQ’de Exchange çeşitlerinden bahsetmiştim. Buradan erişebilirsiniz.

Bu yazıda RabbitMQ Direct Exchange’dan daha detaylı olarak bahsedeceğim.

RabbitMQ Direct Exchange Nedir?
RabbitMQ Direct Exchange Nedir?

RabbitMQ panelini açalım ve excehange ekleyelim. Bu eklediğimiz excehange Direct tipinde olsun.

RabbitMQ Direct Exchange Eklemek
RabbitMQ Direct Exchange Eklemek

Add exhange butonuna basalım. Exchange listesinin içerisinde bizim eklediğimiz Direct Exchange’nin eklediğinden emin olalım.

RabbitMQ Direct Exchange
RabbitMQ Direct Exchange

Exchange’mizin eklendiğini görmüş olduk. Şimdi Queue’lerimizi ekleyelim. Yazının başında olan Queue’leri sırası ile ekleyelim.

RabbitMQ Queue Eklemek
RabbitMQ Queue Eklemek

Exhange ve Queue işlemlerini yaptık. Bu işlemlerden sonra yapmamız gereken Direct Exchange olarak isimlendirdiğimiz exchangemize queue’ları bindings ederek tanımlamamızı gerçekleştireceğiz. Binding işleminde varolan exchange yöntemi ile queue’mize route key tanımlayacağız. Route key sayesinde mesajlarımızın ilgili consumer’ın alabilmesi için broker’a tanımlamızı yapmış oluyoruz.

blank
Direct Exchange Routing Key Tanımlası

Java uygulamasına geçelim. Publisher ve Consumer uygulamasını yapalım.

Publisher uygulamasını yapalım bu uygulama önceki derste yaptığımız uygulamanın aynısı olacak tek farkı ise göndermek istediğimiz Kuyruk ismini yazmak olacak.

public class DirectPublisher {

    public static void main(String[] args) throws IOException, TimeoutException {

        ConnectionFactory connectionFactory = new ConnectionFactory();
        Connection connection = connectionFactory.newConnection();
        Channel channel = connection.createChannel();

        String message="This is Desktop!";

        channel.basicPublish("Direct-Exchange", "desktop", null, message.getBytes());
        channel.close();
        connection.close();
    }
}Code language: JavaScript (javascript)

basicPublish içerisisinde göndermek istediğimiz Exchange adını ve route key adını belirledik. Biz desktop kuyruğuna gönderdik.

Consume uygulaması ise desktop kuyruğunu dinlesin.

public class DirectConsumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        ConnectionFactory connectionFactory=new ConnectionFactory();
        Connection connection=connectionFactory.newConnection();
        Channel channel=connection.createChannel();

        DeliverCallback deliverCallback=(consumerTag,delivery)->{
            String message=new String(delivery.getBody());
            System.out.println("Message Received => " + message);
        };

        channel.basicConsume("Desktop", true, deliverCallback, consumerTag->{});
    }
}Code language: JavaScript (javascript)

Projeyi çalıştırdığımızda ise sonuç aşağıdaki gibi olacaktır.

Message Received => This is Desktop!Code language: PHP (php)

Publisher uygulamamızdan başka bir kuyruğa mesaj gönderdiğimizde desktop consumer uygulamamız bu mesajı almayacaktır.

Sonraki yazıda görüşmek üzere

Önceki Ders: Round Robin Nedir?
RabbitMQ Dersleri
Sonraki Ders:  Fanout Exchange