Flink’s RabbitMQ connector defines a Maven dependency on the “RabbitMQ AMQP Java Client”, is triple-licensed under the Mozilla Public License 1.1 (“MPL”), the GNU General Public License version 2 (“GPL”) and the Apache License version 2 (“ASL”).
Flink的RabbitMQ连接器定义了对“ RabbitMQ AMQP Java客户端”的Maven依赖关系,在Mozilla Public License 1.1(“ MPL”),GNU General Public License版本2(“ GPL”)和Apache License版本2下获得了三重许可。 (以下简称“ ASL”)。
Flink itself neither reuses source code from the “RabbitMQ AMQP Java Client” nor packages binaries from the “RabbitMQ AMQP Java Client”.
Users that create and publish derivative work based on Flink’s RabbitMQ connector (thereby re-distributing the “RabbitMQ AMQP Java Client”) must be aware that this may be subject to conditions declared in the Mozilla Public License 1.1 (“MPL”), the GNU General Public License version 2 (“GPL”) and the Apache License version 2 (“ASL”).
基于Flink的RabbitMQ连接器创建并发布衍生作品(从而重新分发“ RabbitMQ AMQP Java客户端”)的用户必须注意,这可能要遵守Mozilla Public License 1.1(“ MPL”)(即GNU)中声明的条件。通用公共许可证版本2(“ GPL”)和Apache许可证版本2(“ ASL”)。
# RabbitMQ Connector
This connector provides access to data streams from [RabbitMQ](http://www.rabbitmq.com/). To use this connector, add the following dependency to your project:
该连接器提供对RabbitMQ数据流的访问。要使用此连接器,请将以下依赖项添加到您的项目中:
```
...
...
@@ -27,25 +30,32 @@ This connector provides access to data streams from [RabbitMQ](http://www.rabbit
Note that the streaming connectors are currently not part of the binary distribution. See linking with them for cluster execution [here](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/linking.html).
请注意,流连接器当前不是二进制分发的一部分。请参阅此处链接以执行集群。
#### Installing RabbitMQ
Follow the instructions from the [RabbitMQ download page](http://www.rabbitmq.com/download.html). After the installation the server automatically starts, and the application connecting to RabbitMQ can be launched.
This connector provides a `RMQSource` class to consume messages from a RabbitMQ queue. This source provides three different levels of guarantees, depending on how it is configured with Flink:
1.**Exactly-once**: In order to achieve exactly-once guarantees with the RabbitMQ source, the following is required -
1.**精确一次**:为了使用RabbitMQ源实现精确一次的保证,需要以下内容-
* _Enable checkpointing_: With checkpointing enabled, messages are only acknowledged (hence, removed from the RabbitMQ queue) when checkpoints are completed.
* _Use correlation ids_: Correlation ids are a RabbitMQ application feature. You have to set it in the message properties when injecting messages into RabbitMQ. The correlation id is used by the source to deduplicate any messages that have been reprocessed when restoring from a checkpoint.
* _Non-parallel source_: The source must be non-parallel (parallelism set to 1) in order to achieve exactly-once. This limitation is mainly due to RabbitMQ’s approach to dispatching messages from a single queue to multiple consumers.
2.**At-least-once**: When checkpointing is enabled, but correlation ids are not used or the source is parallel, the source only provides at-least-once guarantees.
2.**至少一次**:启用检查点但未使用关联ID或源为并行时,源仅提供至少一次保证。
3.**No guarantee**: If checkpointing isn’t enabled, the source does not have any strong delivery guarantees. Under this setting, instead of collaborating with Flink’s checkpointing, messages will be automatically acknowledged once the source receives and processes them.
Below is a code example for setting up an exactly-once RabbitMQ source. Inline comments explain which parts of the configuration can be ignored for more relaxed guarantees.