See: https://emqx.atlassian.net/wiki/spaces/P/pages/612368639/open+e5.1+remove+auto+restart+interval+from+buffer+worker+resource+options Current problem: In 5.0.x, we have two timer options that control the state changing of buffer worker resources: auto_restart_interval and health_check_interval. - auto_restart_interval controls how often the resource attempts to transition from disconnected to connected. - health_check_interval controls how often the resource is checked and potentially moved from connected to disconnected or connecting. The existence of two independent timers for very similar purposes is confusing to users, QA and even developers. Also, an intimately related configuration is request_timeout, which can interact badly with auto_restart_interval if the latter is poorly configured: requests may always expire if request_timeout < auto_restart_interval and if the resource enters the disconnected state. For health_check_interval, we attempt to derive a sane default that gives requests a chance to retry (if request timeout is finite, then the resource retries requests with a period of min(health_check_interval, request_timeout / 3). Another problem with the separate auto_restart_interval is that its default value (60 s) is too high when compared to the default request timeout and health check, leading to the problems described above if not tuned. Proposed solution: We propose to drop auto_restart_interval in favor of health_check_interval, which will be used for both disconnected -> connected and connected -> {disconnected, connecting} transition checks. With that, the resource will attempt to reconnect at the same interval as the health check, which currently is 15 s. Also, as two smaller changes to accompany this one: - Increase the default request_timeout from 15 s to 45 s. - Rename request_timeout to request_ttl. |
||
|---|---|---|
| .. | ||
| src | ||
| test | ||
| BSL.txt | ||
| docker-ct | ||
| README.md | ||
| rebar.config | ||
EMQX RabbitMQ Bridge
RabbitMQ is a powerful, open-source message broker that facilitates asynchronous communication between different components of an application. Built on the Advanced Message Queuing Protocol (AMQP), RabbitMQ enables the reliable transmission of messages by decoupling the sender and receiver components. This separation allows for increased scalability, robustness, and flexibility in application architecture.
RabbitMQ is commonly used for a wide range of purposes, such as distributing tasks among multiple workers, enabling event-driven architectures, and implementing publish-subscribe patterns. It is a popular choice for microservices, distributed systems, and real-time applications, providing an efficient way to handle varying workloads and ensuring message delivery in complex environments.
This application is used to connect EMQX and RabbitMQ. User can create a rule and easily ingest IoT data into RabbitMQ by leveraging EMQX Rules.
Documentation
- Refer to EMQX Rules for an introduction to the EMQX rules engine.
HTTP APIs
-
Several APIs are provided for bridge management, which includes create bridge, update bridge, get bridge, stop or restart bridge and list bridges etc.
Refer to API Docs - Bridges for more detailed information.
Contributing
Please see our contributing.md.
License
EMQ Business Source License 1.1, refer to LICENSE.