logo
  • Proces
  • Case studies
  • Blog
  • O nas
Napisz do nas
  1. Strona główna

  2. /

    Blog

  3. /

    RabbitMQ

RabbitMQ

2 minuty czytania

Tomasz Kozon

RabbitMQ to rozwiązanie do kolejkowania wiadomości, które pozwala na skalowalność i wydajność systemów rozproszonych. Dzięki temu, że jest oparty na koncepcji kolejek wiadomości, pozwala na rozwiązanie problemów związanych z przetwarzaniem danych w czasie rzeczywistym i zwiększa niezawodność systemów.

Spis treści

RabbitMQ narzędzie do kolejkowania zadań

Przewodnik po funkcjonalnościach RabbitMQ

Instalacja RabbitMQ

RabbitMQ

Ostatnie oferty pracy

CTO - React/Next.js and Python/Node

B2B:

15000 - 25000 PLN netto +VAT

FullStack Developer ( Node.js + Vue.js/React.js)

UOP:

8000 - 14000 PLN brutto

B2B:

13000 - 20000 PLN netto +VAT

Pokaż wszystkie oferty

Czasami w projekcie musimy użyć narzędzia, które pomoże nam w dystrybucji komunikatów na kolejki, czyli w kolejkowaniu zadań. Często potrzebujemy takiego narzędzia, gdy chcemy stworzyć newsletter dla klientów, czy generowanie plików PDF lub innych operacji, które wymagają więcej czasu oczekiwania. RabbitMQ jest właśnie takim narzędziem, które pomoże nam w tym zadaniu.

RabbitMQ

RabbitMQ narzędzie do kolejkowania zadań

Jak na wstępie wspomniałem RabbitMQ jest narzędziem, które pozwoli nam kolejkować zadania. RabbitMQ przyjmuje i przekazuje zadania. Oficjalna dokumentacja projektu mówi nam, że możemy pomyśleć o RabbitMQ jako o placówce pocztowej. Umieszczając list w skrzynce pocztowej lub zostawiając taki list na poczcie, który chcemy nadać, jesteśmy pewni że listonosz w końcu dostarczy przesyłkę odbiorców. Może to zająć trochę, ale odbiorca otrzyma od nas list. W tej analogii RabbitMQ jest to skrzynka pocztowa, poczta i listonosz. Główna różnica jest taka, że RabbitMQ nie zajmuje się dostarczaniem w formie papierowej, zamiast tego przyjmuje, przechowuje i przekazuje binarne bloby danych. RabbitMQ używa pewnego żargonu:

  • Producing - czyli wysyłanie, program wysyłający wiadomości do producent.
  • Queue - to nazwa skrzynki pocztowej. Komunikaty, które przepływają przez RabbitMQ, mogą być przechowywane tylko w kolejce. Kolejka jest ograniczona tylko limitami pamięci i dysku hosta.
  • Consuming - Ma podobne znaczenie jak Producing. Consuming to program, który w większości czeka na otrzymanie wiadomości.

 

Przewodnik po funkcjonalnościach RabbitMQ

Główną funkcjonalnością RabbitMQ jest kolejkowanie wiadomości, co pozwala na ich efektywne przetwarzanie oraz optymalne wykorzystanie zasobów systemowych. Oprócz tego, oferuje wiele innych funkcjonalności, które czynią go jednym z najlepszych narzędzi tego typu na rynku. Do najważniejszych funkcjonalności należą między innymi:

  • Wieloprocesowość i skalowalność, pozwalające na obsługę dużej ilości użytkowników jednocześnie.
  • Wsparcie dla różnych protokołów i formatów wiadomości, w tym między innymi AMQP, STOMP, MQTT i HTTP.
  • Możliwość tworzenia kanałów i wymiany wiadomości między nimi, co ułatwia zarządzanie komunikacją w systemie.
  • Mechanizmy routingu, pozwalające na przesyłanie wiadomości do odpowiednich kolejek na podstawie różnych kryteriów.
  • Możliwość tworzenia kolejek typu fanout, direct oraz topic, co umożliwia elastyczne i skuteczne zarządzanie przepływem informacji.
  • Bezpieczne przesyłanie i przechowywanie wiadomości, w tym między innymi szyfrowanie i autoryzację użytkowników.
  • Wsparcie dla różnych języków programowania, co umożliwia łatwe integrowanie RabbitMQ z innymi systemami i aplikacjami.

 

Instalacja RabbitMQ

RabbitMQ wspiera wiele języków programowania, ja w tym artykule przedstawię instalacje dla języka Javascript, jeśli korzystasz z innego języka, zajrzyj do dokumentacji.

 

Instalujemy moduł amqp.node, który pozwoli nam na wysyłanie i otrzymywanie zadań:

npm install amqplib

 

Jeżeli chcemy mieć podgląd zobaczenia jakie kolejki ma RabbitMQ i ile wiadomości się w nich znajduje, musimy zainstalować narzędzie rabbitmqctl:

sudo rabbitmqctl list_queues

 

lub Windows:

rabbitmqctl.bat list_queues

Powiązane artykuły

Z jakich usług AWS warto skorzystać przy tworzeniu stron internetowych? 

8 mar 2022

Amazon Web Services (AWS) to chyba jedna z najważniejszych platform chmury obliczeniowej dostępnych na rynku. Oferuje ona szeroki zakres usług, które pomagają w tworzeniu, rozwijaniu i utrzymaniu stron internetowych.

Tomasz Kozon

#devops

related-article-image-chmura, AWS

Optymalizacja obrazów Dockera

24 lip 2023

Obrazy dla kontenerów Dockera mogą być naprawdę ciężkie. W internecie można znaleźć przykłady image'ów ważących nawet po 5 lub więcej gigabajtów. Jest to problem, zarówno dla developerów, używających Dockera do lokalnego developmentu, jak i dla osób odpowiedzialnych za setup aplikacji w środowiskach testowych i produkcyjnych. W artykule zostanie poruszony temat zmniejszania rozmiaru obrazów Dockera.

Dawid Kruk

#devops

Customowe template tags w Django

13 lip 2023

Template tags to świetne narzędzie pozwalające na manipulację danymi z poziomu template'ów w aplikacjach opartych o framework Django. Dużo z nich jest już wbudowanych we framework i gotowych do użytku, jednak czasem potrzebna jest customowa funkcjonalność.

Dawid Kruk

#fullstack

Rozszerzanie możliwości Big Data z Apache Samza

25 wrz 2023

Big Data, czyli duże zbiory danych, nieustannie zyskują na znaczeniu w świecie IT. Nowe możliwości analizy i przetwarzania tychże daje Apache Samza - otwarte oprogramowanie stworzone przez Apache Software Foundation. Wspierającym nas procesor strumieniowy o wysokim przepustowości, Samza pomaga rozwijać potęgę Big Data. W tym artykule zajmiemy się szczegółami i możliwościami wynikającymi z korzystania z Apache Samza.

Tomasz Kozon

#bigdata

InVision Studio - niezbędne narzędzie dla każdego projektanta UI/UX

25 wrz 2023

InVision Studio to narzędzie, którego każdy projektant UI/UX powinien mieć w swoim arsenale. Pomaga w tworzeniu responsywnych interfejsów, prototypów i animacji, umożliwiając szybką i efektywną pracę. Doceniany za innowacyjność, łatwość obsługi oraz szeroki zakres funkcji, InVision Studio silnie zaznacza swoją obecność w świecie projektowania UI/UX.

Tomasz Kozon

#web-design

Efektywne prowadzenie webinarów w sektorze IT

25 wrz 2023

W dobie cyfryzacji, webinar staje się jednym z najważniejszych narzędzi w sektorze IT. Powodzenie webinaru zależy od wielu czynników, począwszy od przygotowania, a skończywszy na umiejętności utrzymania zaangażowania uczestników. Zatem cyfrowym szlakiem: poradnik efektywnego prowadzenia, to przewodnik, który pomoże przetrwać w cyfrowym świecie webinarów IT. Dowiedz się więcej, jak skutecznie zorganizować i przeprowadzić webinar, a swoje zdobycze wiedzy zastosować w praktyce.

Tomasz Kozon

#product-management

MyISAM - mechanizm składowania danych w MySQL

25 wrz 2023

MyISAM, zasłużony odpowiednik MySQL dla architektury składowania danych, to prawdziwy klejnot w jego koronie. Zapewniając szybką indeksację i wysoki poziom skompresowanych danych, MyISAM umożliwia efektywne zarządzanie dużymi ilościami informacji. Weźmy zestaw narzędzi, aby zgłębić tajemnice tego mechanizmu składowania danych.

Tomasz Kozon

Zobacz wszystkie artykuły

Napisz do nas

hello@boringowl.io

Zadzwoń

+48 509 280 539

Znajdź nas

Newsletter
social iconsocial iconsocial iconsocial iconsocial icon
logo

Oferta

  • Web Development

  • Mobile Development

  • UI/UX Design

  • E-commerce

  • Team Extension

  • Body Leasing

Menu

  • O nas

  • Case studies

  • FAQ

  • Blog

  • Kariera

  • Kontakt

© 2023 - Boring Owl - Software House Warszawa

adobexd

adobexd

algolia

algolia

amazon-s3

amazon-s3

android

android

angular

angular

api

api

apscheduler

apscheduler

aws-amplify

aws-amplify

aws-lambda

aws-lambda

axios

axios

bash

bash

bootstrap

bootstrap

bulma

bulma

cakephp

cakephp

celery

celery

chartjs

chartjs

clojure

clojure

cloudinary

cloudinary

cms

cms

cobol

cobol

contentful

contentful

cpython

cpython

css3

css3

django

django

django-rest

django-rest

docker

docker

drupal

drupal

dynamodb

dynamodb

electron

electron

expo-io

expo-io

express-js

express-js

fakerjs

fakerjs

fastapi

fastapi

fastify

fastify

figma

figma

firebase

firebase

flask

flask

flutter

flutter

gatsbyjs

gatsbyjs

ghost-cms

ghost-cms

google-cloud

google-cloud

graphcms

graphcms

graphql

graphql

groovy

groovy

gulpjs

gulpjs

hasura

hasura

headless-cms

headless-cms

heroku

heroku

html5

html5

httpie

httpie

immutablejs

immutablejs

ios

ios

java

java

javascript

javascript

jekyll

jekyll

jekyll-admin

jekyll-admin

jenkins

jenkins

jquery

jquery

json

json

keras

keras

keystone5

keystone5

kotlin

kotlin

kubernetes

kubernetes

laravel

laravel

lodash

lodash

magento

magento

mailchimp

mailchimp

material-ui

material-ui

matlab

matlab

maven

maven

miro

miro

mockup

mockup

momentjs

momentjs

mongodb

mongodb

mysql

mysql

nestjs

nestjs

net

net

netlify

netlify

next-js

next-js

nodejs

nodejs

npm

npm

nuxtjs

nuxtjs

oracle

oracle

pandas

pandas

php

php

postgresql

postgresql

postman

postman

prestashop

prestashop

prettier

prettier

prisma

prisma

prismic

prismic

prose

prose

pwa

pwa

python

python

python-scheduler

python-scheduler

rabbitmq

rabbitmq

react-js

react-js

react-native

react-native

react-static

react-static

redis

redis

redux

redux

redux-saga

redux-saga

redux-thunk

redux-thunk

restful

restful

ruby-on-rails

ruby-on-rails

rust

rust

rxjs

rxjs

saleor

saleor

sanity

sanity

scala

scala

scikit-learn

scikit-learn

scrapy

scrapy

scrum

scrum

selenium

selenium

sentry

sentry

shodan

shodan

slack

slack

sms-api

sms-api

socket-io

socket-io

solidity

solidity

spring

spring

sql

sql

sql-alchemy

sql-alchemy

storyblok

storyblok

storybook

storybook

strapi

strapi

stripe

stripe

structured-data

structured-data

struts

struts

svelte

svelte

swagger

swagger

swift

swift

symfony

symfony

tensorflow

tensorflow

terraform

terraform

threejs

threejs

twig

twig

typescript

typescript

vercel

vercel

vue-js

vue-js

webpack

webpack

websocket

websocket

woocommerce

woocommerce

wordpress

wordpress

yarn

yarn

yii

yii

zend

zend

zeplin

zeplin

Zobacz więcej