MCPcopy Index your code
hub / github.com/apache/rocketmq-streams

github.com/apache/rocketmq-streams @rocketmq-streams-all-1.1.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release rocketmq-streams-all-1.1.1 ↗ · + Follow
734 symbols 1,930 edges 114 files 19 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

RocketMQ Streams

Build Status CodeCov GitHub release License Average time to resolve an issue Percentage of issues still open Twitter Follow

RocketMQ Streams is a lightweight stream processing framework, application gains the stream processing ability by depending on RocketMQ Streams as an SDK.

It offers a variety of features:

  • Function:
  • One-to-one transform function, such as: filter, map, foreach
  • Aggregate function, such as: sum, min, max, count, aggregate
  • Generating function, such as: flatMap
  • Group by aggregate and window aggregate
  • Join stream
  • Custom serialization

Quick Start

This paragraph guides you running a stream processing with RocketMQ Streams.

Run RocketMQ 5.0 locally

RocketMQ quick-start

RocketMQ runs on all major operating systems and requires only a Java JDK version 8 or higher to be installed. To check, run java -version:

$ java -version
java version "1.8.0_121"

1) Download RocketMQ

wget https://archive.apache.org/dist/rocketmq/5.0.0/rocketmq-all-5.0.0-bin-release.zip

# Unpack the release
$ unzip rocketmq-all-5.0.0-bin-release.zip

$ cd rocketmq-all-5.0.0-bin-release/bin

2) Start NameServer

NameServer will be listening at 0.0.0.0:9876, make sure that the port is not used by others on the local machine, and then do as follows.

### start Name Server
$ nohup sh mqnamesrv &

### check whether Name Server is successfully started
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

2) Start Broker

### start Broker
$ nohup sh bin/mqbroker -n localhost:9876 &

### check whether Broker is successfully started, eg: Broker's IP is 192.168.1.2, Broker's name is broker-a
$ tail -f ~/logs/rocketmqlogs/broker.log
The broker[broker-a, 192.169.1.2:10911] boot success...

Build stream processing application

1) Build application in IDE

2) Add RocketMQ Streams dependency

    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-streams</artifactId>
        <version>{current.version}</version>
    </dependency>

3) Build stream processing application

  • create topic in RocketMQ before start the stream processing.
sh bin/mqadmin updateTopic -c ${clusterName} -t ${topicName} -r 8 -w 8 -n 127.0.0.1:9876
NOTE: the default clusterName is DefaultCluster in this quick-start doc, changes it with your RocketMQ cluster.
  • add your stream processing code, The following is an example. more examples are here.
public static void main(String[] args) {
        StreamBuilder builder = new StreamBuilder("wordCount");

        builder.source("sourceTopic",  total -> {
                    String value = new String(total, StandardCharsets.UTF_8);
                    return new Pair<>(null, value);
                })
                .flatMap((ValueMapperAction<String, List<String>>) value -> {
                    String[] splits = value.toLowerCase().split("\\W+");
                    return Arrays.asList(splits);
                })
                .keyBy(value -> value)
                .count()
                .toRStream()
                .print();

        TopologyBuilder topologyBuilder = builder.build();

        Properties properties = new Properties();
        properties.put(MixAll.NAMESRV_ADDR_PROPERTY, "127.0.0.1:9876");

        RocketMQStream rocketMQStream = new RocketMQStream(topologyBuilder, properties);

        final CountDownLatch latch = new CountDownLatch(1);

        Runtime.getRuntime().addShutdownHook(new Thread("wordcount-shutdown-hook") {
            @Override
            public void run() {
                rocketMQStream.stop();
                latch.countDown();
            }
        });

        try {
            rocketMQStream.start();
            latch.await();
        } catch (final Throwable e) {
            System.exit(1);
        }
        System.exit(0);
    }

Extension points exported contracts — how you extend this code

FilterAction (Interface)
(no doc) [4 implementers]
core/src/main/java/org/apache/rocketmq/streams/core/function/FilterAction.java
ValueJoinAction (Interface)
(no doc) [4 implementers]
core/src/main/java/org/apache/rocketmq/streams/core/function/ValueJoinAction.java
ForeachAction (Interface)
(no doc) [4 implementers]
core/src/main/java/org/apache/rocketmq/streams/core/function/ForeachAction.java
Accumulator (Interface)
(no doc) [3 implementers]
core/src/main/java/org/apache/rocketmq/streams/core/function/accumulator/Accumulator.java
WindowStream (Interface)
WindowStream must be generated from keyBy. @param key type @param value type [1 implementers]
core/src/main/java/org/apache/rocketmq/streams/core/rstream/WindowStream.java

Core symbols most depended-on inside this repo

getName
called by 89
core/src/main/java/org/apache/rocketmq/streams/core/topology/virtual/GraphNode.java
getKey
called by 66
core/src/main/java/org/apache/rocketmq/streams/core/running/StreamContext.java
get
called by 56
core/src/main/java/org/apache/rocketmq/streams/core/state/StateStore.java
format
called by 50
core/src/main/java/org/apache/rocketmq/streams/core/util/Utils.java
put
called by 47
core/src/main/java/org/apache/rocketmq/streams/core/state/StateStore.java
getJobId
called by 32
core/src/main/java/org/apache/rocketmq/streams/core/rstream/Pipeline.java
makeName
called by 32
core/src/main/java/org/apache/rocketmq/streams/core/util/OperatorNameMaker.java
getValue
called by 27
core/src/main/java/org/apache/rocketmq/streams/core/window/WindowState.java

Shape

Method 592
Class 118
Interface 19
Enum 5

Languages

Java100%

Modules by API surface

core/src/main/java/org/apache/rocketmq/streams/core/window/fire/IdleWindowScaner.java21 symbols
core/src/main/java/org/apache/rocketmq/streams/core/state/AbstractStore.java21 symbols
core/src/main/java/org/apache/rocketmq/streams/core/window/WindowState.java20 symbols
core/src/main/java/org/apache/rocketmq/streams/core/state/RocketMQStore.java19 symbols
core/src/main/java/org/apache/rocketmq/streams/core/window/WindowInfo.java18 symbols
core/src/main/java/org/apache/rocketmq/streams/core/window/WindowKey.java16 symbols
core/src/main/java/org/apache/rocketmq/streams/core/running/StreamContextImpl.java16 symbols
core/src/main/java/org/apache/rocketmq/streams/core/running/StreamContext.java14 symbols
core/src/main/java/org/apache/rocketmq/streams/core/rstream/RStreamImpl.java13 symbols
core/src/main/java/org/apache/rocketmq/streams/core/rstream/GroupedStreamImpl.java13 symbols
core/src/main/java/org/apache/rocketmq/streams/core/metadata/Data.java13 symbols
core/src/main/java/org/apache/rocketmq/streams/core/window/Time.java12 symbols

For agents

$ claude mcp add rocketmq-streams \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page