Added support for librabbitmq-c 0.6.0 and newer
The 0.6.0 version of librabbitmq-c added two parameters to amqp_exchange_declare which allow auto-deleted and internal exchanges. This change requires more advanced version detection so that code could be conditionally compiled for newer versions of the library.
This commit is contained in:
parent
9e25ed4b67
commit
f441f72b75
@ -14,13 +14,38 @@ if(${RABBITMQ_LIBRARIES} MATCHES "NOTFOUND")
|
||||
unset(RABBITMQ_LIBRARIES)
|
||||
else()
|
||||
set(RABBITMQ_FOUND TRUE CACHE INTERNAL "")
|
||||
message(STATUS "Found RabbitMQ library: ${RABBITMQ_LIBRARIES}")
|
||||
endif()
|
||||
|
||||
set(CMAKE_REQUIRED_INCLUDES ${RABBITMQ_HEADERS})
|
||||
if(RABBITMQ_FOUND)
|
||||
set(CMAKE_REQUIRED_INCLUDES ${RABBITMQ_HEADERS})
|
||||
|
||||
check_c_source_compiles("#include <amqp.h>\n int main(){if(AMQP_DELIVERY_PERSISTENT){return 0;}return 1;}" HAVE_RABBITMQ50)
|
||||
check_c_source_compiles("#include <amqp.h>\n int main(){if(AMQP_DELIVERY_PERSISTENT){return 0;}return 1;}" HAVE_RABBITMQ50)
|
||||
|
||||
if(HAVE_RABBITMQ50)
|
||||
execute_process(COMMAND grep "#define *AMQP_VERSION_MAJOR" "${RABBITMQ_HEADERS}/amqp.h"
|
||||
COMMAND sed -e "s/.* //"
|
||||
OUTPUT_VARIABLE AMQP_VERSION_MAJOR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND grep "#define *AMQP_VERSION_MINOR" "${RABBITMQ_HEADERS}/amqp.h"
|
||||
COMMAND sed -e "s/.* //"
|
||||
OUTPUT_VARIABLE AMQP_VERSION_MINOR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND grep "#define *AMQP_VERSION_PATCH" "${RABBITMQ_HEADERS}/amqp.h"
|
||||
COMMAND sed -e "s/.* //"
|
||||
OUTPUT_VARIABLE AMQP_VERSION_PATCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
set(AMQP_VERSION "${AMQP_VERSION_MAJOR}.${AMQP_VERSION_MINOR}.${AMQP_VERSION_PATCH}")
|
||||
|
||||
if(NOT "${AMQP_VERSION}" VERSION_LESS "0.6.0")
|
||||
add_definitions(-DRABBITMQ_060)
|
||||
endif()
|
||||
|
||||
message(STATUS "Found RabbitMQ version ${AMQP_VERSION}: ${RABBITMQ_LIBRARIES}")
|
||||
message(STATUS "Found RabbitMQ development headers at: ${RABBITMQ_HEADERS}")
|
||||
|
||||
else()
|
||||
message(WARNING "RabbitMQ-C library does not have AMQP_DELIVERY_PERSISTENT. Version 0.5 or newer is required but version ${AMQP_VERSION} was found.")
|
||||
endif()
|
||||
|
||||
if(RABBITMQ_FOUND AND NOT HAVE_RABBITMQ50)
|
||||
message(WARNING "Old version of RabbitMQ-C library found. Version 0.5 or newer is required.")
|
||||
endif()
|
||||
|
@ -3,6 +3,7 @@ if(BUILD_RABBITMQ)
|
||||
include_directories(${RABBITMQ_HEADERS})
|
||||
add_library(mqfilter SHARED mqfilter.c)
|
||||
target_link_libraries(mqfilter query_classifier log_manager ${RABBITMQ_LIBRARIES})
|
||||
add_dependencies(mqfilter pcre2)
|
||||
install(TARGETS mqfilter DESTINATION ${MAXSCALE_LIBDIR})
|
||||
else()
|
||||
message(WARNING "Could not find librabbitmq, the mqfilter will not be built.")
|
||||
|
@ -368,7 +368,10 @@ init_conn(MQ_INSTANCE *my_instance)
|
||||
amqp_exchange_declare(my_instance->conn, my_instance->channel,
|
||||
amqp_cstring_bytes(my_instance->exchange),
|
||||
amqp_cstring_bytes(my_instance->exchange_type),
|
||||
0, 1,
|
||||
false, true,
|
||||
#ifdef RABBITMQ_060
|
||||
false, false,
|
||||
#endif
|
||||
amqp_empty_table);
|
||||
|
||||
reply = amqp_get_rpc_reply(my_instance->conn);
|
||||
@ -394,7 +397,10 @@ init_conn(MQ_INSTANCE *my_instance)
|
||||
amqp_exchange_declare(my_instance->conn, my_instance->channel,
|
||||
amqp_cstring_bytes(my_instance->exchange),
|
||||
amqp_cstring_bytes(my_instance->exchange_type),
|
||||
0, 1,
|
||||
false, true,
|
||||
#ifdef RABBITMQ_060
|
||||
false, false,
|
||||
#endif
|
||||
amqp_empty_table);
|
||||
reply = amqp_get_rpc_reply(my_instance->conn);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user