การผลิตและการใช้ข้อความ
ส่งและจัดการข้อความด้วย MassTransit
การผลิตและการใช้ข้อความ เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
ลงทะเบียน MassTransit
กำหนดค่า MassTransit ใน DI โดยลงทะเบียน MassTransit ชี้ให้ใช้ตัวขนส่ง (ในที่นี้คือ RabbitMQ) และให้ระบบค้นหาผู้บริโภคข้อความของคุณโดยอัตโนมัติ
builder.Services.AddMassTransit(x =>
{
x.AddConsumers(typeof(Program).Assembly);
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host("localhost");
cfg.ConfigureEndpoints(context);
});
});การกำหนดตัวรับข้อความ
ตัวรับข้อความใช้อินเทอร์เฟซ IConsumer<T> สำหรับชนิดข้อความที่ตัวรับจัดการ ตรรกะของคุณอยู่ใน Consume ซึ่งรับ ConsumeContext<T>
public class OrderPlacedConsumer : IConsumer<OrderPlaced>
{
public async Task Consume(ConsumeContext<OrderPlaced> context)
{
OrderPlaced message = context.Message;
// handle the event
}
}การเผยแพร่เหตุการณ์
ฉีด IPublishEndpoint แล้วเรียก Publish เพื่อเผยแพร่เหตุการณ์ไปยังสมาชิกทั้งหมด
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));
}การส่งคำสั่ง
คำสั่งจะส่งไปยังจุดปลายทางเฉพาะ ให้ค้นหา ISendEndpoint สำหรับปลายทางนั้น แล้วเรียก Send
var endpoint = await _sendProvider
.GetSendEndpoint(new Uri("queue:charge-payment"));
await endpoint.Send(new ChargePayment(orderId, amount));สรุปการเผยแพร่เทียบกับการส่ง
การเผยแพร่ใช้สำหรับเหตุการณ์และส่งไปยังตัวรับข้อความที่สมัครรับข้อมูลทุกราย ส่วนการส่งใช้สำหรับคำสั่งและกำหนดเป้าหมายไปยังคิวเดียว การเลือกให้ถูกต้องจะกำหนดลักษณะการกำหนดเส้นทางของคุณ
พลังของบริบทการรับข้อความ
ConsumeContext ให้ข้อมูลมากกว่าข้อความ ได้แก่ รหัสการเชื่อมโยง ส่วนหัว และความสามารถในการเผยแพร่หรือตอบกลับจากภายในตัวรับข้อความ ซึ่งช่วยให้สามารถเชื่อมโยงข้อความได้
public async Task Consume(ConsumeContext<OrderPlaced> context)
{
await context.Publish(new InvoiceRequested(context.Message.OrderId));
}คำขอและการตอบกลับ
MassTransit ยังรองรับคำขอและการตอบกลับผ่านระบบส่งข้อความด้วย ไคลเอนต์คำขอจะส่งคำขอและรอการตอบกลับที่มีชนิดข้อมูลกำกับ เหมาะเมื่อคุณต้องการคำตอบแต่ยังต้องการแยกส่วนออกจากกันด้วยตัวกลางข้อความ
var response = await _client
.GetResponse<OrderStatus>(new GetOrder(orderId));
OrderStatus status = response.Message;การตั้งชื่อจุดปลายทาง
ConfigureEndpoints จะตั้งชื่อจุดปลายทางรับข้อความ (คิว) ให้ผู้รับข้อความแต่ละรายโดยอัตโนมัติตามแบบแผน คุณสามารถปรับแต่งชื่อด้วยตัวจัดรูปแบบหรือการกำหนดค่าอย่างชัดเจนเมื่อจำเป็น
การทำให้ข้อความเป็นอนุกรม
โดยค่าเริ่มต้น MassTransit จะทำให้ข้อความเป็นอนุกรมในรูปแบบเจสันและใส่ข้อมูลเมตา เช่น ชนิดข้อความและรหัสต่าง ๆ ผู้ผลิตและตัวรับข้อความใช้ชนิดสัญญาข้อความร่วมกัน ซึ่งมักอยู่ในแพ็กเกจที่ใช้ร่วมกัน
การทำงานพร้อมกัน
ตัวรับข้อความสามารถประมวลผลหลายข้อความพร้อมกันได้ ปรับ PrefetchCount และขีดจำกัดการทำงานพร้อมกันเพื่อรักษาสมดุลระหว่างปริมาณงานกับความสามารถในการรองรับของระบบปลายทาง
cfg.ReceiveEndpoint("orders", e =>
{
e.PrefetchCount = 16;
e.ConcurrentMessageLimit = 8;
e.ConfigureConsumer<OrderPlacedConsumer>(context);
});การทดสอบตัวรับข้อความ
MassTransit มาพร้อมตัวจำลองการทดสอบในหน่วยความจำ คุณจึงสามารถเผยแพร่ข้อความและตรวจสอบว่าตัวรับข้อความจัดการข้อความนั้นแล้ว โดยไม่ต้องใช้ตัวกลางข้อความจริง
ตรวจสอบอย่างรวดเร็ว
ทดสอบการสร้างและการรับข้อความ
สรุป
ลงทะเบียน MassTransit ด้วย AddMassTransit ทรานสปอร์ต และ ConfigureEndpoints ตัวรับข้อความใช้อินเทอร์เฟซ IConsumer<T> พร้อมเมธอด Consume ใช้ IPublishEndpoint.Publish สำหรับเหตุการณ์ (สมาชิกทั้งหมด) และ ISendEndpoint.Send สำหรับคำสั่ง (คิวเดียว) ConsumeContext ช่วยให้เชื่อมโยงข้อความและรองรับคำขอและการตอบกลับได้ ส่วนตัวจำลองการทดสอบจะตรวจสอบตัวรับข้อความในหน่วยความจำ
คำถามที่พบบ่อย
บทเรียน “การผลิตและการใช้ข้อความ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การผลิตและการใช้ข้อความ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การผลิตและการใช้ข้อความ”
ส่งและจัดการข้อความด้วย MassTransit คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การผลิตและการใช้ข้อความ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แนวคิดการส่งข้อความ
- การผลิตและการใช้ข้อความ
- ซากาและเวิร์กโฟลว์
- การจัดการข้อผิดพลาดและการลองใหม่