What are feature flags direct_exchange_routing_v2,  feature_flags_v2 , listener_records_in_ets and tracking_record_in_ets?
search cancel

What are feature flags direct_exchange_routing_v2,  feature_flags_v2 , listener_records_in_ets and tracking_record_in_ets?

book

Article ID: 297318

calendar_today

Updated On:

Products

Support Only for OpenSource RabbitMQ

Issue/Introduction

The purpose of this article is to describe feature flags direct_exchange_routing_v2,  feature_flags_v2 , listener_records_in_ets and tracking_record_in_ets. 

Each feature flag indicates a change available  in a higher version of RabbitMQ. An in-depth discussion of feature flags, and how it supports rolling upgrades can be found here.

Resolution

direct_exchange_routing_v2 - This feature flag introduces a change in the routing implementation in direct exchanges that increases sender-side/client-to-queue throughput.
 

In previous versions, for every message that was routed through the direct exchange, a routing key match spec was performed against the routing table, which increased lookup time as the number of entries in the routing table increased. With this change, a new routing index table is introduced with an index that includes both source exchange and routing key, resulting in quicker routing and in turn much higher throughput.This change affects only direct exchanges, not default, topic or fanout exchanges. All protocols, except Stream protocol and queue types (classic, quorum and streams) would benefit from this change.
 

feature_flags_v2 - With the introduction of this flag, all v1 code path has been eliminated. With this, all new nodes can be joined to a cluster using the v2 feature flags. In version 3.12 of RabbitMQ, this feature_flag is required.  So, to upgrade to 3.12,  the cluster should be first upgraded to 3.11. Also, all code that handled upgrades from versions prior to 3.7 has been deleted. 
 

The following two feature flags are changes in internal implementations of the tables.
 

listener_records_in_ets - A change that moves listener records from Mnesia tables to ETS
 

tracking_record_in_ets - A change that moves tracking records rom Mnesia tables to ETS