Memproduksi dan Mengonsumsi Pesan
Kirim dan tangani pesan dengan MassTransit.
Memproduksi dan Mengonsumsi Pesan adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Mendaftarkan MassTransit
Konfigurasikan MassTransit di DI: daftarkan, arahkan ke transportasi (di sini RabbitMQ), dan biarkan MassTransit menemukan konsumen Anda.
builder.Services.AddMassTransit(x =>
{
x.AddConsumers(typeof(Program).Assembly);
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host("localhost");
cfg.ConfigureEndpoints(context);
});
});Mendefinisikan Konsumen
Konsumen mengimplementasikan IConsumer<T> untuk jenis pesan yang ditanganinya. Logika Anda berada di dalam Consume, yang menerima ConsumeContext<T>.
public class OrderPlacedConsumer : IConsumer<OrderPlaced>
{
public async Task Consume(ConsumeContext<OrderPlaced> context)
{
OrderPlaced message = context.Message;
// handle the event
}
}Menerbitkan Peristiwa
Sisipkan IPublishEndpoint dan panggil Publish untuk menyiarkan peristiwa kepada semua pelanggan.
public class OrderService
{
private readonly IPublishEndpoint _publish;
public OrderService(IPublishEndpoint publish) => _publish = publish;
public Task PlaceOrderAsync(Guid id, string email) =>
_publish.Publish(new OrderPlaced(id, email));
}Mengirim Perintah
Perintah dikirim ke endpoint tertentu. Dapatkan ISendEndpoint untuk tujuan tersebut, lalu panggil Send.
var endpoint = await _sendProvider
.GetSendEndpoint(new Uri("queue:charge-payment"));
await endpoint.Send(new ChargePayment(orderId, amount));Ringkasan Publish dan Send
Publish digunakan untuk peristiwa dan menjangkau setiap konsumen yang berlangganan; Send digunakan untuk perintah dan menargetkan satu antrean. Pemilihan yang tepat menentukan perilaku perutean Anda.
Kekuatan ConsumeContext
ConsumeContext menyediakan lebih dari sekadar pesan: ID korelasi, header, serta kemampuan untuk menerbitkan atau memberikan respons dari dalam konsumen, sehingga memungkinkan rangkaian pesan.
public async Task Consume(ConsumeContext<OrderPlaced> context)
{
await context.Publish(new InvoiceRequested(context.Message.OrderId));
}Permintaan dan Respons
MassTransit juga mendukung permintaan dan respons melalui pesan. Klien permintaan mengirimkan permintaan dan menunggu balasan bertipe tertentu, berguna saat Anda memerlukan jawaban tetapi tetap ingin memisahkan ketergantungan dari broker.
var response = await _client
.GetResponse<OrderStatus>(new GetOrder(orderId));
OrderStatus status = response.Message;Penamaan Endpoint
ConfigureEndpoints secara otomatis memberi nama endpoint penerima (antrean) untuk setiap konsumen menggunakan konvensi. Anda dapat menyesuaikan nama dengan pemformat atau konfigurasi eksplisit bila diperlukan.
Serialisasi Pesan
Secara bawaan, MassTransit membuat serialisasi pesan sebagai JSON dan menyertakan metadata (jenis pesan, ID). Produsen dan konsumen menggunakan jenis kontrak pesan yang sama, biasanya dalam paket bersama.
Konkurensi
Konsumen dapat memproses banyak pesan secara paralel. Sesuaikan PrefetchCount dan batas konkurensi untuk menyeimbangkan throughput dengan kapasitas sistem hilir.
cfg.ReceiveEndpoint("orders", e =>
{
e.PrefetchCount = 16;
e.ConcurrentMessageLimit = 8;
e.ConfigureConsumer<OrderPlacedConsumer>(context);
});Menguji Konsumen
MassTransit menyediakan rangkaian pengujian dalam memori sehingga Anda dapat menerbitkan pesan dan memastikan konsumen menanganinya, tanpa broker sungguhan.
Pemeriksaan Singkat
Uji produksi dan konsumsi pesan.
Ringkasan
Daftarkan MassTransit bersama AddMassTransit, transportasi, dan ConfigureEndpoints. Konsumen mengimplementasikan IConsumer<T> dengan metode Consume. Gunakan IPublishEndpoint.Publish untuk peristiwa (semua pelanggan) dan ISendEndpoint.Send untuk perintah (satu antrean). ConsumeContext memungkinkan rangkaian pesan serta permintaan dan respons, dan rangkaian pengujian memverifikasi konsumen dalam memori.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memproduksi dan Mengonsumsi Pesan” gratis?
Ya — teks lengkap “Memproduksi dan Mengonsumsi Pesan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memproduksi dan Mengonsumsi Pesan”?
Kirim dan tangani pesan dengan MassTransit. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Memproduksi dan Mengonsumsi Pesan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Konsep Pesan
- Memproduksi dan Mengonsumsi Pesan
- Saga dan Alur Kerja
- Penanganan Kesalahan dan Percobaan Ulang