Viestien tuottaminen ja kuluttaminen
Lähettäkää ja käsitelkää viestejä MassTransitillä.
Viestien tuottaminen ja kuluttaminen on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C# Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C# Academy-kurssilla on yhteensä 4 oppituntia.
MassTransitin rekisteröinti
Määrittäkää MassTransit DI:ssä: rekisteröikää se, osoittakaa se siirtokanavaan (tässä RabbitMQ) ja antakaa sen etsiä kuluttajanne.
builder.Services.AddMassTransit(x =>
{
x.AddConsumers(typeof(Program).Assembly);
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host("localhost");
cfg.ConfigureEndpoints(context);
});
});Kuluttajan määrittäminen
Kuluttaja toteuttaa käsittelemälleen viestityypille rajapinnan IConsumer<T>. Logiikka sijaitsee Consume-metodissa, joka vastaanottaa ConsumeContext<T>-kontekstin.
public class OrderPlacedConsumer : IConsumer<OrderPlaced>
{
public async Task Consume(ConsumeContext<OrderPlaced> context)
{
OrderPlaced message = context.Message;
// handle the event
}
}Tapahtuman julkaiseminen
Injektoi IPublishEndpoint ja kutsu Publish-metodia lähettääksesi tapahtuman kaikille tilaajille.
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));
}Komennon lähettäminen
Komennot lähetetään tiettyyn päätepisteeseen. Hae kohteelle ISendEndpoint ja kutsu Send-metodia.
var endpoint = await _sendProvider
.GetSendEndpoint(new Uri("queue:charge-payment"));
await endpoint.Send(new ChargePayment(orderId, amount));Publishin ja Sendin yhteenveto
Publish on tarkoitettu tapahtumille, ja se tavoittaa kaikki tilatut kuluttajat. Send on tarkoitettu komennoille, ja se kohdistuu yhteen jonoon. Oikea valinta määrittää viestien reitityksen.
ConsumeContextin mahdollisuudet
ConsumeContext tarjoaa viestin lisäksi korrelaatiotunnisteet, otsakkeet sekä mahdollisuuden julkaista viestejä tai lähettää vastauksia kuluttajan sisältä, mikä mahdollistaa viestien ketjuttamisen.
public async Task Consume(ConsumeContext<OrderPlaced> context)
{
await context.Publish(new InvoiceRequested(context.Message.OrderId));
}Pyyntö-vastaus
MassTransit tukee myös viestinvälitykseen perustuvaa pyyntö-vastaus-mallia. Pyyntöasiakas lähettää pyynnön ja odottaa tyypitettyä vastausta. Tämä on hyödyllistä, kun tarvitsette vastauksen mutta haluatte silti säilyttää välittäjästä irrotetun arkkitehtuurin.
var response = await _client
.GetResponse<OrderStatus>(new GetOrder(orderId));
OrderStatus status = response.Message;Päätepisteiden nimeäminen
ConfigureEndpoints nimeää käytäntöjen perusteella automaattisesti jokaiselle kuluttajalle vastaanottopäätepisteen eli jonon. Tarvittaessa voitte mukauttaa nimiä muotoilijoilla tai eksplisiittisellä määrityksellä.
Viestien serialisointi
MassTransit serialisoi viestit oletusarvoisesti JSON-muotoon ja sisällyttää niihin metatiedot, kuten viestityypin ja tunnisteet. Tuottajat ja kuluttajat käyttävät samoja viestisopimusten tyyppejä, jotka sijaitsevat usein jaetussa paketissa.
Samanaikaisuus
Kuluttaja voi käsitellä useita viestejä rinnakkain. Säätäkää PrefetchCount-arvoa ja samanaikaisuuden rajoja tasapainottaaksenne suorituskyvyn ja taustajärjestelmien kapasiteetin.
cfg.ReceiveEndpoint("orders", e =>
{
e.PrefetchCount = 16;
e.ConcurrentMessageLimit = 8;
e.ConfigureConsumer<OrderPlacedConsumer>(context);
});Kuluttajien testaaminen
MassTransit sisältää muistissa toimivan testikahvan, jonka avulla voitte julkaista viestin ja varmistaa, että kuluttaja käsitteli sen ilman oikeaa viestinvälitysjärjestelmää.
Pikatarkistus
Testatkaa viestin tuottamista ja kuluttamista.
Yhteenveto
Rekisteröikää MassTransit käyttämällä AddMassTransit-metodia, siirtokerrosta ja ConfigureEndpoints-metodia. Kuluttajat toteuttavat rajapinnan IConsumer<T> ja sen Consume-metodin. Käyttäkää tapahtumille IPublishEndpoint.Publish-metodia, joka tavoittaa kaikki tilaajat, ja komennoille ISendEndpoint.Send-metodia, joka lähettää viestin yhteen jonoon. ConsumeContext mahdollistaa viestien ketjuttamisen ja pyyntö-vastaus-mallin, ja testikahvalla kuluttajat voidaan tarkistaa muistissa.
Opi C# tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 93
- Oppitunnit
- 346
Usein kysytyt kysymykset
Onko oppitunti ”Viestien tuottaminen ja kuluttaminen” ilmainen?
Kyllä – oppitunnin ”Viestien tuottaminen ja kuluttaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C# Academy-kurssin, päivitä CoddyKit PROhon. C# Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Viestien tuottaminen ja kuluttaminen”?
Lähettäkää ja käsitelkää viestejä MassTransitillä. Harjoittelet C# Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni C# Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin C# Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Viestien tuottaminen ja kuluttaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä C# Academy-oppitunnilla?
Kyllä. Jokainen C# Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Viestinnän käsitteet
- Viestien tuottaminen ja kuluttaminen
- Sagojen ja työnkulkujen perusteet
- Virheenkäsittely ja uudelleenyritykset