rabbitmq-server/deps/rabbitmq_jms_topic_exchange
Michal Kuratczyk 1a2126676d Update CLA URL 2021-09-23 14:29:36 +02:00
..
include Switch to Mozilla Public License 2.0 (MPL 2.0) 2020-07-13 15:28:47 +01:00
src Bump (c) year 2021-01-22 09:00:14 +03:00
test Bump (c) year 2021-01-22 09:00:14 +03:00
.gitignore Git: Ignore copied CLI 2019-12-12 13:31:33 +01:00
.travis.yml Travis CI: Update config from rabbitmq-common 2020-03-04 14:24:28 +01:00
BUILD.bazel Also assert no missing suites for all other deps 2021-07-12 18:05:55 +02:00
CODE_OF_CONDUCT.md URL Cleanup 2019-03-20 03:17:00 -05:00
CONTRIBUTING.md Update CLA URL 2021-09-23 14:29:36 +02:00
LICENSE Update LICENSE 2020-07-20 11:25:22 +01:00
LICENSE-MPL-RabbitMQ Revert drop of Exhibit B on MPL 2.0 2020-07-20 17:00:15 +01:00
Makefile Remove duplicate rabbitmq-components.mk and erlang.mk files 2021-03-22 15:40:19 +01:00
README.md Update copyright (year 2020) 2020-03-10 16:16:43 +01:00

README.md

RabbitMQ JMS Topic Exchange Plugin

Overview

This plugin adds server-side support for RabbitMQ JMS client. This plugin provides support for JMS topic routing and selection based on JMS SQL selection rules.

This implementation is based upon the Java Messaging Service Specification Version 1.1.

Project Maturity

RabbitMQ JMS-related projects are several years old and can be considered reasonably mature. They have been first open sourced in June 2016. Some related projects (e.g. a compliance test suite) and documentation are yet to be open sourced.

Supported RabbitMQ Versions

This plugin targets RabbitMQ 3.6.0 and later versions.

Installation

This plugin ships with RabbitMQ starting with 3.6.3. Enable it with

[sudo] rabbitmq-plugins enable rabbitmq_jms_topic_exchange

Design

The plugin this generates is a user-written exchange type for RabbitMQ client use. The exchange type name is "x_jms_topic" but this is not a topic exchange. Instead it works together with a standard topic exchange to provide the JMS topic selection function.

When JMS Selectors are used on a Topic Destination consumer, the destination (queue) is bound to an exchange of type x_jms_topic, with arguments that indicate what the selection criteria are. The x_jms_topic exchange is, in turn, bound to the standard Topic Exchange used by JMS messaging (this uses the RabbitMQ exchange-to-exchange binding extension to the AMQP 0-9-1 protocol).

In this way, normal topic routing can occur, with the overhead of selection only applying when selection is used, and after the routing and filtering implied by the topic name.

Building From Source

Building is no different from building other RabbitMQ plugins.

TL;DR:

git clone https://github.com/rabbitmq/rabbitmq-jms-topic-exchange.git
cd rabbitmq-jms-topic-exchange
make -j dist
ls plugins/*

(c) 2007-2020 VMware, Inc. or its affiliates.

See LICENSE for license information.