Siema mirki.
poproszę o gotowe rozwiązanie albo link do materiału z którego mógłbym skorzystać. Mam następujący problem:
Jest aplikacja napisana w #php #symfony która to publikuje eventy w kolejce #rabbitmq. Są też 2 consumery, które to konsumują te eventy. Problem jest taki, że w pewnym miejscu mam race condition. Są opublikowane rożne eventy, które podczas konsumpcji tworzą lub aktualizują rekord w bazie danych. Problem jest w tym, że konsumpcja może nastąpić
@mariecziek: Ciężko powiedzieć czego potrzebujesz, ale zgadując na podstawie tego co napisałeś, to nie istnieje żadne gotowe rozwiązanie pod twój problem, bo to twój kod jest problemem. Potrzebujesz po prostu poprawnego designu i tyle.
Na race condition aktualizacji może pomóc transakcja + SELECT FOR UPDATE, żeby zrobić locka na wierszu dopóki nie skończysz swojej operacji update'u.
Co do race condition przy tworzeniu wierszy, to już musiałbyś dokładnie napisać co tam
  • Odpowiedz
@mariecziek: Tak jak mówiłem - design kodu. Sterowanie logiką biznesową przez wyjątki to pierwszy klasyczny błąd. Tracisz przez to możliwość zrobienia tej operacji atomowo, jak zresztą widać.
Zamiast tego zrób albo tak jak pisałem - transakcja, select for update, update/insert, koniec transakcji. Albo jeśli jesteś w stanie to zrobić w sposób idempotentny to po prostu INSERT ... ON DUPLICATE KEY UPDATE albo REPLACE.

Ewentualnie zapytaj po prostu jakiegoś seniora w
  • Odpowiedz
#kbin szybki update (tag do czarnolistowania)

https://karab.in

- poprawiona strona wyszukiwania
- poprawiona strona tagu
- kolejki przeniesione na #rabbitmq #docker
- kolejne miejsca w których pojawia się kbin https://joinfediverse.wiki/What_is_Kbin

Teraz jeszcze przenieść to na YunoHost i wreszcie kończę zabawę z serwerem.

https://kbin.pub - strona projektu
https://kbin.social - anglojęzyczna instancja

#programowanie #ciekawostki #wykop #strim #webdev
Ernest - #kbin szybki update (tag do czarnolistowania)

https://karab.in

- poprawion...

źródło: Zrzut ekranu 2023-04-27 o 15.02.04

Pobierz
@Ernest_: w jaki sposób ten fedi wykop jest zabezpieczony przed manipulacja i multikontami, wykopywaniem samemu siebie z innych kont? Jak korpo się dowie to boty to tak zasraja że szkoda gadać, istnieje tam jakieś w twoim panelu fyrdumdyrdum do wyłapywania synchronicznego wykopywania? I kiedy Toto będzie embedowac YouTube i inne żeby nie przenosiło do filmu tylko od razu pokazywało?
  • Odpowiedz
Siema #php świry.
Mam pytanko do osób pracujących z #symfony i #rabbitmq #amqp - https://symfony.com/doc/current/messenger.html#multiple-failed-transports

No więc mam w aplikacji 2 kolejki - jedna służy do obsługi eventów z części legacy aplikacji - przesyłam event jako JSON. Druga kolejka służy do obsługi eventów z nowej aplikacji. Problem jaki próbuję rozwiązać, to utrata wiadomości w razie coś pójdzie nie tak. Teraz po prostu tracę wiadomość i tyle - mogę maksymalnie sobie logi obejrzeć
  • Odpowiedz
Hello, jest tu jakiś magik od RabbitMQ?

Korzystajac z docker-compose postawiłem Rabbita na dwoch klastrach (3 nody per cluster). Teraz chce dodac federacje, na jedenym z clustrow federation ma status running. Na drugim clustrze jest
"Error detail: econnrefused"

version: '3.8'

services:

rabbitmq-node-1:
image: rabbitmq:3.8.7-management
container_name: rabbitmq-node-10
hostname: rabbitmq-node-10
ports:
- "15672:15672"
networks:
- cluster-network
volumes:
- /rabbit/storage/rabbitmq-node-1:/var/lib/rabbitmq
environment:
- RABBITMQ_ERLANG_COOKIE=cluster_cookie
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin

rabbitmq-node-2:
image: rabbitmq:3.8.7-management
container_name: rabbitmq-node-20
hostname: rabbitmq-node-20
ports:
  • Odpowiedz
Mireczki potrzebuję pomocy w temacie #docker & #rabbitmq

Potrzebuję zapisać w jakimś volume informacje o utworzonych kolejkach, wiadomościach na kolejkach z rabbitmq aby w razie ubicia kontenera i uruchomienia ponownie wszystko ładnie się przywróciło.

Aktualnie rzeźbię w docker compose ale później pewnie czeka mnie deployment tego.

Docker-compose(fragment):
Services:
rabbitmq:
image: rabbitmq:3-management
containername: rabbitmq
hostname: rabbit
ports:
- 15672:15672
environment:
RABBITMQNODENAME: node@rabbitmq
volumes:
- rabbitmq
datacontainer:/var/lib/rabbitmq

volumes:
rabbitmq
data_container:
@wojtek656: Nie da się edytować tego co masz w kolejce, musisz zrzucić wszystko z kolejki, usunąć deduplikaty i na nowo wrzucić. No chyba że robisz zapis do bazy, to może zrób sobie tymczasowy unikalny indeks na jakieś id (jeżeli masz taką możliwość) i ignoruj rzucane wyjątki o naruszenie indeksu ( ͡° ͜ʖ ͡°)
  • Odpowiedz
#prasowkadev 30 sierpnia 2019 roku

#javascript i jego dziwactwa
https://dev.to/ben/what-is-the-oddest-javascript-behavior-4dh2

Wprowadzenie do architektury sterowanej zdarzeniami z użyciem #rabbitmq #naukaprogramowania
https://blog.theodo.com/2019/08/event-driven-architectures-rabbitmq/

Jak podnieść swoją produktywność
https://dev.to/paco_ita/transform-your-habits-into-productivity-routine-3fcn

Otwieranie projektu na społeczność open-source w praktyce #programowanie
https://dev.to/yvonnickfrin/preparing-your-project-being-open-sourced-5bdp

Chris Beard opuszcza stanowisko CEO Moziili
https://blog.mozilla.org/blog/2019/08/29/my-next-chapter/

Jak poprawić rozwiązywalność problemów i zostać #programista15k
https://habr.com/en/company/hygger/blog/465401/

Źródło: https://prasowka.dev/prasowka-30-08-2019/

A na koniec może plusik dla zasięgu?
  • Odpowiedz
Czołem!

Mam problemem z ustawieniem połączenia z rabbtmq. Jego IP i port ustawione przez Dockera wynosi 192.168.99.100:32777

teraz w pythonie za pomocą biblioteki tera wykonuję niniejsze polecenia:
parameters = pika.URLParameters('amqp://guest:guest@192.168.99.100:32777/')
connection = pika.BlockingConnection(parameters)

no i wywala mi błąd...

pika.exceptions.ConnectionClosed: Connection to 192.168.99.100:32785 failed: [Errno 61] Connection refused

Czy może ktoś powiedzieć dlaczego tak się dzieje?

#docker
#rabbitmq
@yggdrasil
polecenie uruchomienia to: bash -c "clear && DOCKERHOST=tcp://192.168.99.100:2376 DOCKERCERTPATH=/Users/daxxpl/.docker/machine/machines/default DOCKERTLS_VERIFY=1 docker exec -it rabbitmq sh"

czyli zły port miałem... ale po naprawieniu portu mam teraz taki błąd:
pika.exceptions.IncompatibleProtocolError: (-1, 'EOF')

Korzystam z programu kinematic do obsługi dockera.
  • Odpowiedz
Mireczki potrzebuje pomocy z konfiguracją #celery #rabbitmq #supervisor #django #python
Miałem sobie na serwerze jedną apkę w #django z taskami #celery na #rabbitmq, celery odpalane przez #supervisor i wszystko działało jak należy. Dołożyłem kolejną apkę w django zachowując ten sam schemat konfiguracji i działa, tylko zaczęły się problemy. Taski z jednej trafiają czasem do drugiej i odwrotnie.

konfiguracją celery.py 1 apki:

import os
from celery import Celery
from django.conf import settings
@svs_svs: średnio się znam, ale może trzeba zdefiniować osobne kolejki

A worker instance can consume from any number of queues. By default it will consume from all queues defined in the task_queues setting (that if not specified falls back to the default queue named celery).


http://docs.celeryproject.org/en/latest/userguide/workers.html#queues
https://stackoverflow.com/questions/19853378/how-to-keep-multiple-independent-celery-queues
  • Odpowiedz
@qwelukasz: jaki masz typ exchange? A widze topic. Myslalem ze nie ustawiles tego typu.
EDIT: a widze musisz chyba to zrobic na odwrot. rotuing key w kolejce ma miec szkolenie.* i wtedy jak wyslesz szkolenie.wyniki to trafi do tej kolejki
  • Odpowiedz
@qwelukasz: Czyli najlepiej jak rotuing key bedzie np. szkolenie.* a drugi routing key szkolenie.wyniki. Teraz jak wyslesz wiadomosc na ten exchange z routing key: szkolenie.wyniki to trafi na dwie kolejki. Jak wyslesz wiadomosc z rotuing key: szkolenie.costam to trafi tylko do tej szkolenie.*
  • Odpowiedz
Mirki korzysta ktoś z #rabbitmq?

Załóżmy, że mam dwa serwisy: Api, oraz Users.Service.
- klient wysyła do Api request celem zarejestrowania się w systemie.
- api wrzuca komendę na szynę, a ona następnie trafia do odpowiedniego serwisu(Uses.Service).

Jak w takim razie mam sprawdzić czy komenda wykonała się prawidłowo i użytkownik został zarejestrowany?
Analogicznie jak w przypadku np. logowania czy jakiekolwiek innej komendy?

Da się to jakoś skonfigurować w #rabbitmq, czy
#docker #rabbitmq #programowanie Chłopacy, pytanie. Mam sobie Dockerfile zaczynający się FROM php:7-apache. Próbuję do #php dodać wsparcie rabbita. Teoretycznie można to zrobić tak RUN apt-get update && apt-get install -y librabbitmq-dev && echo "" | pecl install amqp, ale nic z tego. W php mam Fatal error: Uncaught Error: Class 'PhpAmqpLib\Connection\AMQPStreamConnection' not found. Dodawał może ktoś ten moduł?
@repostuje: wszystko jest ok. Instalacja jest bezbłędna, bo inaczej kontener by się nie zbudował. Mimo wszystko nie mam wsparcia w PHP do łączenia się z serwerem rabbita. Dodałem nawet moduł do php.ini pod koniec, bo myślałem, że to przez to. No ale lipa nadal.
  • Odpowiedz