• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..01-Dec-2021-

include/H01-Dec-2021-405

src/H01-Dec-2021-471294

BUILD.bazelH A D01-Dec-20211.4 KiB7057

CODE_OF_CONDUCT.mdH A D01-Dec-20212.3 KiB4535

CONTRIBUTING.mdH A D01-Dec-20211.6 KiB3924

LICENSEH A D01-Dec-2021182 53

LICENSE-MPL-RabbitMQH A D01-Dec-202116.3 KiB374293

MakefileH A D01-Dec-2021568 1810

README.mdH A D01-Dec-20212.1 KiB6542

README.md

1# RabbitMQ JMS Topic Exchange Plugin
2
3## Overview
4
5This plugin adds server-side support for [RabbitMQ JMS client](https://github.com/rabbitmq/rabbitmq-jms-client).
6This plugin provides support for JMS topic routing and selection based on JMS SQL selection
7rules.
8
9This implementation is based upon the [Java Messaging Service
10Specification Version 1.1](https://www.oracle.com/technetwork/java/docs-136352.html).
11
12## Project Maturity
13
14RabbitMQ JMS-related projects are several years old and can be considered
15reasonably mature. They have been first open sourced in June 2016.
16Some related projects (e.g. a compliance test suite) and documentation are yet to be open sourced.
17
18## Supported RabbitMQ Versions
19
20This plugin targets RabbitMQ `3.6.0` and later versions.
21
22## Installation
23
24This plugin ships with RabbitMQ starting with `3.6.3`. Enable it with
25
26```
27[sudo] rabbitmq-plugins enable rabbitmq_jms_topic_exchange
28```
29
30
31## Design
32
33The plugin this generates is a user-written exchange type for RabbitMQ
34client use. The exchange type name is "`x_jms_topic`" but this is _not_
35a topic exchange. Instead it works together with a standard topic
36exchange to provide the JMS topic selection function.
37
38When JMS Selectors are used on a Topic Destination consumer, the
39destination (queue) is bound to an exchange of type `x_jms_topic`, with
40arguments that indicate what the selection criteria are. The
41`x_jms_topic` exchange is, in turn, bound to the standard Topic Exchange
42used by JMS messaging (this uses the RabbitMQ exchange-to-exchange
43binding extension to the AMQP 0-9-1 protocol).
44
45In this way, normal topic routing can occur, with the overhead of
46selection only applying when selection is used, and _after_ the routing
47and filtering implied by the topic name.
48
49## Building From Source
50
51Building is no different from [building other RabbitMQ plugins](https://www.rabbitmq.com/plugin-development.html).
52
53TL;DR:
54
55    git clone https://github.com/rabbitmq/rabbitmq-jms-topic-exchange.git
56    cd rabbitmq-jms-topic-exchange
57    make -j dist
58    ls plugins/*
59
60## Copyright and License
61
62(c) 2007-2020 VMware, Inc. or its affiliates.
63
64See [LICENSE](./LICENSE) for license information.
65