window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Erfahren Sie mehr über Ruby on Rails mit Pub/Sub - The Codest
Der Codest
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Branchen
    • Fintech & Bankwesen
    • E-commerce
    • Adtech
    • Gesundheitstechnik
    • Herstellung
    • Logistik
    • Automobilindustrie
    • IOT
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
Pfeil zurück ZURÜCK
2022-12-07
Software-Entwicklung

Erfahren Sie mehr über Ruby on Rails mit Pub/Sub

Der Codest

Michal Pawlak

Senior Ruby-Entwickler

Pub/Sub kann viele Vorteile für das Projekt bringen - es kann den Code sauber machen, Dienste entkoppeln und sie leicht skalierbar machen. Erfahren Sie mehr über Pub/Sub im folgenden Artikel und bringen Sie Ihr Projekt auf ein höheres Niveau!

Ruby on Rails (Rails, RoR) ist ein bekanntes Framework für Webanwendungen, das in der Rubinrot Programmiersprache. Kneipe/Verleih ist eine Kurzbezeichnung für Software-Entwurfsmuster namens Veröffentlichen-Abbestellen. Ich werde erklären, wie die Kommunikation zwischen Softwarekomponenten in Rails mit Pub/Sub gehandhabt werden kann.

Was ist Pub/sub?

Kneipe/Verleih ist ein Software-Entwurfsmuster, das die Kommunikation von Dienst zu Dienst ermöglicht. Dienst
bringt eine der beiden Rollen mit sich: Herausgeber (der produziert) oder Empfänger (der konsumiert). Was ist
wird als Ereignis, Nachricht oder Meldung bestimmt. In der
Im Zusammenhang mit diesem Artikel werden beide Begriffe synonym verwendet und bezeichnen ein und dieselbe Sache.
Der Dienst, der produziert, weiß nicht, wer konsumiert. Der Dienst, der konsumiert, weiß nicht
den Ursprung der Nachricht kennen. Sie können sich gegenseitig unbekannt bleiben. Es ist anders als
Nachrichten-Warteschlangen, bei denen die Komponente, die die Nachricht sendet, oft das Ziel kennt
- Diese Art der Nachrichtenübermittlung ermöglicht es Ihnen, Nachrichten überall zu versenden. Dieser Mechanismus ist ein Kernstück
von Kneipe/Verleih und es bedeutet, dass sie entkoppelt sind.

Um ihre gegenseitigen Interessen zum Ausdruck zu bringen, müssen sie ein gemeinsames Verständnis haben. Deshalb,
beide Rollen haben einen impliziten Mechanismus des Sticks, bei dem der Produzent einer Nachricht und der
Verbraucher der Nachricht treffen. Dieser Mechanismus wird als Thema, Abonnement oder Topic bezeichnet. Er ist
der für die Zuordnung von Nachrichten zu Subjekten zuständig ist, handelt es sich im Wesentlichen um einen zustandslosen Nachrichtenfilter.
Themen fungieren als Sendestationen. Ein Herausgeber produziert die Nachricht für das Thema,
Die Abonnenten erhalten sofort die Nachricht des Themas. Aufgrund der entkoppelten
Diensten ist die effizienteste Art des Nachrichtenaustauschs die asynchrone Verarbeitung.

Rails ohne Pub/Sub

Standardmäßig gibt es in Rails keinen Overhead für Software-Entwurfsmuster zur Weitergabe von Nachrichten zwischen Komponenten. Entwickler verwenden Standard objektorientierte Programmierung (OOP) Paradigma: Übergabe von Parametern an Funktionen, Abfrage von Klassen über Werte.

Wenn die Anwendung eher unkompliziert ist, könnte dies ausreichen. Wenn die Anwendung wächst und beispielsweise einige Vorgänge asynchron ausgeführt werden müssen, dann muss die Projekt braucht eine Abstraktion, die diesen Daten-Workflow auflöst. Anstatt das Rad neu zu erfinden, können Entwickler Kneipe/Verleih um diesen Mangel an Abstraktion auszugleichen.

Vorteile von Pub/Sub mit Rails

  • Vermeiden Sie aktive Datensatzrückrufe.
  • Durch das Hinzufügen asynchroner Parallelverarbeitung zu einem System werden Leistung, Zuverlässigkeit und Skalierbarkeit verbessert.
  • Nachrichten können asynchron an verschiedene Teile des Systems gesendet werden.
  • Ermöglicht die asynchrone Übertragung von Nachrichten an verschiedene Teile eines Systems.
  • Entkopplung - das Hinzufügen oder Ändern einer Funktion hat keine Auswirkungen, da Pub/Sub
    ermöglicht es Ihnen, das Zusammenspiel der einzelnen Elemente zu verändern.
  • Der Nachrichtenkonsument muss nicht mehr regelmäßig nach Aktualisierungen oder neuen
    Informationen. Sie verringert die Übermittlungslatenz, die in Systemen besonders problematisch sein kann
    ohne jegliche Toleranz für Verzögerungen.
  • Es gibt keine Begrenzung für die Anzahl der Teilnehmer, die das System verarbeiten kann, da sie sich ändern kann,
    jederzeit aufrüsten, sich vermehren oder verschwinden.

Nachteile von Pub/Sub mit Rails

  • Der größte Nachteil von Pub/Sub-Systemen ist die Entkopplung von Publisher und
    Teilnehmer.

Rails Pub/Sub einführen

Beispiele für Quellcode in Rails wurden mit der Bibliothek
Pub/Sub auf Rails (in der Nomenklatur von Ruby wird eine Bibliothek als gem bezeichnet): Weitere Details finden Sie in der Readme-Datei des Gems. Die Implementierung besteht aus Modulen:

  1. Bereich,
  2. Veranstaltung,
  3. Ereignisbehandler,
  4. Herausgeber der Veranstaltung,
  5. Abonnement.

Bereich

Beschreibt die Geschäftslogik, um den Kontext für Pub/Sub zu liefern und somit eine saubere Code.

 Modul Benachrichtigungen
   erweitern PubSub::Domain
 end
 Modul Berichte
   erweitern PubSub::Domain
 end

Veranstaltung

Es ist eine Klasse, die beschreibt, was passiert ist. Erklären Sie den Klassennamen so selbstbeschreibend wie möglich mit dem, was passiert ist, zum Beispiel: abgebrochen, geändert, erstellt, zerstört, gesendet, aktualisiert. Ereignisnamen können wie folgt aussehen: ProfitAndLossStatementCreatedEvent, was bedeutet, dass ein Finanzbericht erstellt wurde.

 class Reports::ProfitAndLossStatementCreatedEvent < PubSub::DomainEvent
   Attribut :gewinn_und_verlust_auszug_id, Typen::Strict::Integer
 end

Herausgeber der Veranstaltung

Klasse, die Ereignisse ausgeben kann. Das Beispiel zeigt die Erstellung eines Dienstberichts. Wenn der Bericht erfolgreich erstellt wurde, wird das Ereignis zur Erstellung des Berichts ausgegeben.

class Reports::ProfitAndLossStatementService
   include PubSub::Emit
    def ausführen
     emit(:report_gewinn_und_verlust_auszug_erstellt, gewinn_und_verlust_auszug_id: id) if result.ok?
   end
 end

Ereignis-Handler

Diese Klasse sollte als Reaktion auf die Behandlung eines Ereignisses ausgeführt werden.

Modul Benachrichtigungen
 class ReportsProfitAndLossStatementCreatedHandler < PubSub::DomainEventHandler
   def call
     ReportMailer.gewinn_und_verlust_auszug(gewinn_und_verlust_auszug).deliver_now
   end

   private

   def gewinn_und_verlust_aussage
     Gewinn-und-Verlust-Rechnung.find(event_data.gewinn-und-verlust-Rechnung_id)
   end
 end
end

Abonnement

Ereignisse sind durch Abonnements an ihre Bearbeiter gebunden.

Benachrichtigungen:
 reports__profit_and_loss_statement_created: async

Beispielhafte Anwendungsfälle:

  • Die Funktion "Folgen" in sozialen Netzwerken,
  • Internet der Dinge,
  • Postversand,
  • Benachrichtigung über erzeugte Dateien.

Ähnliche Muster

  1. EreignisBus - Komponenten können Ereignisse an EventBus senden, ohne zu wissen, wer sie aufnimmt oder wie viele Teilnehmer darauf reagieren werden,
  2. Beobachter - Das Subjekt unterhält eine Liste von abhängigen Personen, den so genannten Beobachtern, und benachrichtigt diese, sobald sich ihr Zustand ändert,
  3. Pooling - Beim Polling fragen die Clients das System regelmäßig, ob es neue Ereignisse oder Daten gibt.

Edelsteine

  • https://github.com/edisonywh/rocketman

  • https://github.com/krisleech/wisper

  • https://github.com/stevo/pubsubaufSchienen

Zusammenfassung

Pub/sub ist kein üblicher Ansatz in Ruby in Rails. Wie im Artikel vorgestellt, kann dieses Muster viele Vorteile für das Projekt bringen - es kann den Code sauber machen, Dienste entkoppeln und sie leicht skalierbar machen.

Kooperationsbanner

Ähnliche Artikel

Fintech

5 Beispiele für die beste Verwendung von Ruby

Haben Sie sich jemals gefragt, was wir mit Ruby alles machen können? Nun, der Himmel ist wahrscheinlich die Grenze, aber wir sprechen gerne über einige mehr oder weniger bekannte Fälle...

Der Codest
Pawel Muszynski Software Engineer
Software-Entwicklung

Rails-Entwicklung mit TMUX, Vim, Fzf + Ripgrep

Vor ein paar Jahren habe ich mit einigen meiner Freunde, alles Java-Entwickler, gegrillt. Ich weiß nicht, wie es dazu kam, aber wir fingen an, über unsere Programmierumgebungen zu sprechen. I...

Der Codest
Marcin Doliwa Software Engineer
Software-Entwicklung

Produktentwicklung: Python vs. Ruby

Python und Ruby sind die beiden am weitesten verbreiteten Backend-Programmiersprachen. Python ist etwas populärer und hat eine breitere Anwendung. Ruby bietet jedoch auch viele Vorteile und...

Der Codest
Kamil Ferens Leiter der Abteilung Wachstum
Software-Entwicklung

Ruby on Rails Modularisierung mit Packwerk Episode I

Für Menschen ist es schwierig, das Gesamtbild eines Problems zu erkennen, ohne viel Zeit und Mühe zu investieren. Dies ist besonders bei der Arbeit mit großen und komplexen Anwendungen der Fall....

Nicolas Nisoria
Software-Entwicklung

Die Rolle von Rack im Ruby-Ökosystem

Erfahren Sie mehr über die Rolle von Rack im Ökosystem von Ruby von unserem Experten und verbessern Sie Ihr Ruby-Spiel.

Nicolas Nisoria

Abonnieren Sie unsere Wissensdatenbank und bleiben Sie auf dem Laufenden über das Fachwissen aus dem IT-Sektor.

    Über uns

    The Codest - Internationales Software-Unternehmen mit technischen Zentren in Polen.

    Vereinigtes Königreich - Hauptsitz

    • Büro 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale Tech-Hubs

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      Der Codest

    • Startseite
    • Über uns
    • Dienstleistungen
    • Fallstudien
    • Gewusst wie
    • Karriere
    • Wörterbuch

      Dienstleistungen

    • IT-Beratung
    • Software-Entwicklung
    • Backend-Softwareentwicklung
    • Frontend-Softwareentwicklung
    • Staff Augmentation
    • Backend-Entwickler
    • Cloud-Ingenieure
    • Daten-Ingenieure
    • Andere
    • QS-Ingenieure

      Ressourcen

    • Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner
    • Aus den USA nach Europa: Warum entscheiden sich amerikanische Start-ups für eine Verlagerung nach Europa?
    • Tech Offshore Development Hubs im Vergleich: Tech Offshore Europa (Polen), ASEAN (Philippinen), Eurasien (Türkei)
    • Was sind die größten Herausforderungen für CTOs und CIOs?
    • Der Codest
    • Der Codest
    • Der Codest
    • Privacy policy
    • Website terms of use

    Urheberrecht © 2025 von The Codest. Alle Rechte vorbehalten.

    de_DEGerman
    en_USEnglish sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek de_DEGerman