[FREE E-Book] Belajar ASP.NET Core Web API 6 dengan Visual Studio

Buku ini memberikan panduan untuk membangun back-end yang memberikan fungsi sebagai RESTful service untuk melakukan proses logika atau layanan pengelolaan data pada database server. ASP.NET Core Web API adalah framework yang dapat mempermudah Full Stack Developer untuk membangun RESTful service yang dapat berjalan di atas platform baik Windows, Linux dan OS X.

Buku ini akan memberikan panduan penggunaan framework ASP.NET Core 6 Web API untuk pengembangan RESTful service tahap demi tahap dengan menggunakan tool development Visual Studio Community dan Visual Studio Code.

Buku ini juga membahas beberapa fitur seperti penggunaan Entity Framework Core dan Migration untuk bekerja dengan database, basic security, dan pengaksesan dari aplikasi Blazor Wasm.

Berikut adalah tautan untuk mengunduh buku ini

Advertisement

[Free E-Book] Seri Belajar Pemrograman: Pemrograman Dasar dengan Java

Buku ini memberikan konsep pemrograman dasar yang meliputi struktur runtutan, percabangan, perulangan, dan sub program atau dekomposisi. Implementasi konsep-konsep tersebut diberikan dalam contoh program dengan bahasa pemrograman Java. Kode-kode program yang diberikan disertai dengan ilustrasi flowchart dan penjelasan untuk membantu pemahaman pembaca.

Untuk mendownload buku ini, anda dapat mengunduh pada link berikut ini

RabbitMQ & .NET 6 Series [Part 3 – Topic Exchange]

Artikel ini adalah kelanjutan dari artikel sebelumnya yang membahas tentang penggunaan Direct Exchange dengan RabbitMQ. Pada artikel ini akan dibahas cara penggunaan Topic Exchange, berbeda dengan jenis exchange sebelumnya Direct Exchange yang menggunakan “fix” routing key, pada Topic Exchange, consumer dapat menentukan routing key secara lebih fleksibel, sebagai contoh consumer dapat menggunakan routing pattern seperti (“*”), sebagai contoh katalog.*, maka consumer akan mengambil semua pesan yang mempunyai awalan routing key katalog tanpa memperhatikan karakter setelah awalan tersebut.

Menambahkan Publisher

Pada project RabbitMQProducer yang sudah dibuat pada artikel sebelumnya, tambahkan class dengan nama TopicExchangePublisher.cs, kemudian tambahkan kode berikut ini:

namespace RabbitMQProducer
{
    public class TopicExchangePublisher
    {
        public static void Publish(IModel channel)
        {
            channel.ExchangeDeclare("contoh-topic-exchange",
            ExchangeType.Topic);

            var count = 0;
            while (true)
            {
                var message = new { Name = "Producer", Message = $"Urutan pesan ke: {count}" };
                var body = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(message));
                channel.BasicPublish("contoh-topic-exchange", "katalog.details", null, body);
                count++;
                Thread.Sleep(1000);
            }

        }
    }
}

Pada kode diatas yang berbeda dengan kode pada artikel sebelumnya adalah tipe exchange yang digunakan yaitu Topic. Untuk menjalankan class tersebut tambahkan kode pada Program.cs.

using RabbitMQ.Client;
using RabbitMQProducer;

var factory = new ConnectionFactory
{
    Uri = new Uri("amqp://guest:guest@localhost:5672")
};
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();
TopicExchangePublisher.Publish(channel);

Menambahkan Consumer

Pada project RabbitMQConsumer, tambahkan class TopicExchangeConsumer.cs.

namespace RabbitMQConsumer
{
    public static class TopicExchangeConsumer
    {
        public static void Consume(IModel channel)
        {
            channel.ExchangeDeclare("contoh-topic-exchange", ExchangeType.Topic);
            channel.QueueDeclare("contoh-topic-queue",
                durable: true,
                exclusive: false,
                autoDelete: false,
                arguments: null);
            channel.QueueBind("contoh-topic-queue", "contoh-topic-exchange", "katalog.*");

            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += (sender, e) =>
            {
                var body = e.Body.ToArray();
                var message = Encoding.UTF8.GetString(body);
                Console.WriteLine(message);
            };

            channel.BasicConsume("contoh-topic-queue", true, consumer);
            Console.WriteLine("Aplikasi consumer dijalankan...");
            Console.ReadLine();
        }
    }
}

Dari kode deiatas dapat dilihat bahwa routing key yang digunakan mengandung pattern (“*”), sehingga consumer akan menerima pesan dari Publisher yang mengirimkan pesan dengan alamat routing key berawalan “katalog”. Panggil class tersebut pada Program.cs.

using RabbitMQ.Client;
using RabbitMQConsumer;


var factory = new ConnectionFactory
{
    Uri = new Uri("amqp://guest:guest@localhost:5672")
};
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();

TopicExchangeConsumer.Consume(channel);

Kemudian jalankan Consumer app dan Publisher app untuk melihat hasilnya.

Dapat dilihat bahwa contoh-topic-queue sudah terbinding pada contoh-topic-exchange dengan routing key “katalog.*”

Jika kedua aplikasi Publisher dan Consumer dijalankan dapat dilihat pesan yang dikirimkan oleh Publisher dapat diproses oleh Consumer.

RabbitMQ & .NET 6 Series [Part 1 – Instalasi RabbitMQ dengan Docker]

Di era arsitektur microservices seperti sekarang, komunikasi antar services sangatlah penting. Ada dua macam metode yang sering digunakan untuk komunikasi antar services, yaitu synchronous communication dan asynchronous communication. Untuk melakukan komunikasi secara asynchronous kita membutuhkan message broker. Message broker memungkinkan kita untuk membangun aplikasi/layanan terpisah untuk meningkatkan kinerja, dan keandalan dari aplikasi.

Apa itu Message Broker?

Kita bisa menganalogikan message broker seperti kantor pos, tugasnya adalah mengantarkan pesan antara pengirim dan penerima pesan (surat). Ketika pesan diterima oleh message broker dari producer (pengirim pesan), dia akan mengirimkan pesan tersebut ke subscriber (penerima pesan). Pola message broker ini adalah salah satu pola yang paling berguna pada komunikasi antar services pada microservices yang terpisah.

Apa itu RabbitMQ?

RabbitMQ adalah salah satu message broker dengan lisensi open source yang populer dan banyak digunakan saat ini. RabbitMQ sendiri terkenal cukup ringan dan mudah untuk di deploy. RabbitMQ sendiri juga mendukung banyak protokol komunikasi seperti AMQP, STOMP, HTTP, dan Web Socket. RabbitMQ sudah terbukti memiliki high availability dan skalabilitas yang tinggi.

Instalasi RabbitMQ

Cara yang paling mudah untuk memasang RabbitMQ adalah menggunakan docker container. Pada sistem operasi Windows atau MacOS, kita dapat menginstal Docker Desktop terlebih dahulu. Untuk petunjuk instalasi docker desktop dapat dilihat pada tautan berikut ini. Berikut adalah hasil instalasi dari Docker Desktop.

Untuk mengecek apakah docker sudah terinstall pada komputer, tambahkan perintah berikut:

Setelah dipastikan bahwa docker sudah terinstal pada komputer anda, buat file dengan nama docker-compose.yaml, kemudian tambahkan kode berikut:

Anda dapat menggunakan editor apapun untuk membuat file tersebut, pada contoh ini digunakan editor Visual Studio Code. Kemudian masuk pada folder dimana anda sudah membuat file tersebut, kemudian jalankan perintah docker-compose up.

Untuk melihat apakah RabbitMQ sudah terpasang, anda dapat mengakses url https://localhost:15672, maka akan ditampilkan hasil sebagai berikut:

Kemudian masukan username: guest, dan password: guest. Jika berhasil maka akan muncul tampilan RabbitMQ Management untuk memonitor RabbitMQ server dari web browser.

Pada artikel selanjutnya akan dijelaskan penggunaan exchange dan tipe-tipe exchange pada RabbitMQ seperti Direct, Topic, Header, dan Fanout.