This article is an extended version of my presentation about RabbitMQ to my coworkers. I’m publishing it just for fun.
I’ll cover basic RabbitMQ concepts. We will implement Producer/Consumer POC with reconnecting and graceful shutdown. You’ll learn how to implement preserving partial message order using rabbitmq_consistent_hash_exchange plugin.
For a link to the source code scroll to the bottom of the article.
Today, any system that is a little more than just a TODO list app, cannot live…
In the company, I currently work we are dealing with many external APIs. This short story is about API integration that sometimes didn’t work because of a single invisible character. I’ll not provide the name of the company, so let just refer to it as a “Company” :)
In this specific case, the Company knows to send webhooks to our exposed and secured HTTP endpoints.
One day we started to see error logs, meaning we cannot verify the request signature, and that’s where our small journey starts…
Spoiler: “People still copy text from Microsoft Word with all these hidden characters…”
After we built a generic TCP proxy, we can continue with our journey. Today’s goal will be to understand the MySQL Protocol, receive, decode, encode and send to the client the first packet sent by the MySQL Server.
Each client connection to MySQL Server handled by a thread. MySQL is portable, so the underhood threads implementation is system dependent (Windows, macOS, and Linux have their own threads implementation).
What important to us, it’s to understand that a single client connection is handled by a corresponding thread in MySQL. This thread is responsible to do authentication and executing all the queries…
Weekend. Quarantine. If you bored like me, and want to learn something new, you can join my journey of writing yet another MySQL Proxy Server.
In the past, I had a crazy idea of writing MySQL Proxy Server. The first reason was to understand the MySQL Communication Protocol to let me write more efficient programs. The second one was to learn more about low-level network programming concepts in general. Finally, I have time at least to start… and you can join me!
The real usage of MySQL Proxy can vary:
We will write a small tool that will help us with mongo query profiling and tracing. It’s very handy when you want to see all queries currently executed in MongoDB. I use it mostly to find long-running queries, queries that don’t use indexes or tracing a business flow in case of a bug.
Before we start, let’s talk about MongoDB profiler. …
I believe not every young software company or startup has those problems, but from my experience, those 5 are the most common issues I met as a developer. They look trivial but create so much pain to the developers and the business.
Each startup I worked in (some of them went to production after just a year of intensive development, others already have been in production for a few years and have a huge codebase with hundreds of clients that already use the product), had almost zero logs.
The lack of logs makes it very difficult to understand, why something…
What are you doing when you looking for a new job? Right, you are going to contact HR or search on websites like LinkedIn, Glassdoor, StackOverflow, etc.
Let’s try another approach :) Did you hear about ‘X-Recruiting’ header? For example, if you look at response headers from PayPal.com, you can see this ‘strange’ header.
Interesting, how many companies use this smart way to find appropriate candidates?
We will try to answer this question using GO and AWS Free-tier instance. You can run the app on your own machine if you have a stable and good internet connection. …