bloomberg / amqpprox Goto Github PK
View Code? Open in Web Editor NEWAn AMQP 0.9.1 proxy server, designed for use in front of an AMQP 0.9.1 compliant message queue broker such as RabbitMQ.
License: Apache License 2.0
An AMQP 0.9.1 proxy server, designed for use in front of an AMQP 0.9.1 compliant message queue broker such as RabbitMQ.
License: Apache License 2.0
Describe the bug
This sequence doesn't work:
BACKEND ADD_DNS b1 dc1 rabbitcluster1-lb.example.com 5672
BACKEND ADD_DNS b2 dc1 rabbitcluster2-lb.example.com 5672
Backend addresses are stored with IP&port
key and thus you can't have two DNS based backends on the same port... IP is always "" when using ADD_DNS. Maybe it could just resolve the hostname even when using ADD_DNS.
To Reproduce
Steps to reproduce the behavior:
BACKEND ADD_DNS b1 dc1 rabbitcluster1-lb.example.com 5672
(all good)BACKEND ADD_DNS b2 dc1 rabbitcluster2-lb.example.com 5672
(fails)Failed to insert backend: 'b2 (dc1): rabbitcluster2-lb.example.com :5672', error code: 1
Expected behavior
It is very much common to run multiple RabbitMQ services on the same port. :)
Environment (please complete the following information):
When I try to build amqpprox
, I run into a conan failure that says that its [email protected]
package cannot be provisioned.
I tried both macOS and Fedora Linux, and it turns out, on both machines I run OpenSSL/LibreSSL 3.x.
Am I correct to assume that amqpprox
currently requires OpenSSL 1.1?
Hi!
I can't find this in the github repo or in the code , but is there any way to load mappings and other configurations from a file?
I am looking at the code and it seems that the map vhost to backend is mainly being held in memory and load through the cli .
I personally need this to guarantee that on failure the apps comes back with the same conf (could be done with systemd hooks , but a config file would be nicer?)
Thank you for putting this on github , been waiting for something like this for quite a while.
First of all thank you for the amazing efforts on this great tool for amqp.
I was wondering what you do in Bloomberg to protect against a possible failure of the system hosting amqpprox. Do you have more than one instance running on different server? If one fails, how do you direct the traffic to another instance? Do you have some sort of clustering over amqpprox? any plan on that?
I was thinking to adopt amqpprox in an enterprise scenario, and I try to have all the single point of failure in HA.
Does amqpprox support configuration persistence and save the configuration on file?
How it survives a server reboot or fail? Do you script the configuration as amqpprox_ctl
commands and submit on each reboot?
Probably is connected to #57
Would be very nice to have a docker image hosted on the hub ready to be configured and run, with a build pipeline that is connected to this repo and builds a new version every time there's a new tagged version.
Now we're using C++17 for this project, the boost::shared_mutex
can be converted over to a std::shared_mutex
.
Is your feature request related to a problem? Please describe.
We currently have client IP propagated down (over multiple proxies) to the RMQ instance. If we were to use amqpprox and retain the same functionality, we would need to have support for ingress proxy protocol on amqpprox side as well, for we can't position amqpprox on the edge. Due to the fact that our infrastructure supports only proxy protocol v2... well, that's why we would like to see in/out v2 support. ๐
Describe the solution you'd like
Implementation of proxy protocol on ingress so that amqpproxy could propagate the real client IP down the road... and while on it we would like to see support for v2 proxy protocol thrown in. ๐
Describe alternatives you've considered
We could forget about real client IPs, but that is unfortunately easier said than done. ๐คท๐ปโโ๏ธ
As far as i notice the clients start loosing HB frames until they disconnect , what i was able to replicate is PAUSING/UNPAUSING quick enough within the HB Interval configured on the clients (and hopefully loosing 1 of the 2 HB frames within the interval) will not disconnect the client.
I wonder what's the function of PAUSING ? also i tried PAUSING ->REMAPPING -> UNPAUSING , but still my client ends up going to the same rabbitmq server until i reconnect.
Thank you!
Is your feature request related to a problem? Please describe.
Streams have a new protocol:
https://github.com/rabbitmq/rabbitmq-server/blob/v3.9.x/deps/rabbitmq_stream/docs/PROTOCOL.adoc#publish
Describe the solution you'd like
perhaps
START LISTEN STREAM_PROTOCOL <port>
Additional context
Announced at #rabbitmqsummit
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.