RabbitMQ Direct Exchange Java Publisher / Consumer Uygulaması
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 panelini açalım ve excehange ekleyelim. Bu eklediğimiz excehange Direct tipinde olsun.
Add exhange butonuna basalım. Exchange listesinin içerisinde bizim eklediğimiz Direct Exchange’nin eklediğinden emin olalım.
Exchange’mizin eklendiğini görmüş olduk. Şimdi Queue’lerimizi ekleyelim. Yazının başında olan Queue’leri sırası ile ekleyelim.
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.
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
No Comment! Be the first one.