
RocketMQ – Open source distributed messaging and streaming data platform - manigandham
https://rocketmq.incubator.apache.org/
======
nicktelford
There's quite a lot of conflicting information here.

On the comparison of queues, wrt ordering, it states:

    
    
        Ensure strict ordering of messages, have no hot spot problem,and can scale out gracefully
    

And slates Kafka with:

    
    
        Ensure ordering of messages within a partition
    

But then on the "core concept" page it states:

    
    
        Topic is partitioned into one or more sub-topics, “message queues”.
    

And:

    
    
        Consuming messages orderly means messages are consumed the same order they are sent by producers for each message queue. If you are dealing with scenario that global order is mandatory, make sure the topic you use has only one message queue.
    

Which amounts to exactly the same as Kafka, albeit with "partitions" renamed
"message queues".

~~~
squeaky-clean
A Kafka topic is more synonymous with a "message queue" and a partition is a
division among hardware for parallelism.

So you can have one topic, partitioned to 5 consumers, and each consumer
storing the received events. Each consumer will see their own messages in-
order, but if you merge the 5 it is not guaranteed to be ordered.

I'd guess this is what RocketMQ means by "scale out gracefully"

~~~
nicktelford
In Kafka, multiple consumers can recieve multiple partitions. The only thing,
from a consumer's perspective, that's special about partitions is that it's
the level at which message ordering is guaranteed.

That's exactly the same semantics provided by RocketMQ's "message queues",
from what I can tell - except perhaps that these message queues are explicitly
subscribed to? If that's the case, you can do that in Kafka too, but it's
generally discouraged, as it can lead to performance problems.

------
drej
I thought it was a problem to navigate through all AWS services. Then I
discovered (surely not) all the Apache projects.

This is by no means a criticism, rather amusement when looking at all the
projects within the epic Apache ecosystem.

~~~
pjmlp
For many years, Apache was the Boost of Java programmers.

Meaning, where all cool libraries were being developed.

------
kisstheblade
What's the difference between this and activemq (and apollo, if anything came
out of that project...)?

Edit: Found something
[https://rocketmq.incubator.apache.org/docs/motivation/](https://rocketmq.incubator.apache.org/docs/motivation/)

But is this a re-implementation or something else? Wasn't apollo also a re-
implementation?

~~~
discreteevent
As far as I can see it looks like there is a possibility that a new version of
ActiveMQ will be based on Apache Artemis in the future sometime, as in later
on, maybe... Artemis claims to be really fast and solves some of the problems
outlined in the RocketMQ motivation page you listed. It uses an append only
journal file similar to Kafka and the clustering and failover story looked
simple and reliable to me though I haven't tested it.

Whether or not Artemis becomes the new version of ActiveMQ, RedHat have
recently released a new version of their AMQ and it is based on Artemis. It
supports AMQP 1.0, MQTT, STOMP, OpenWire, and HornetQ Core.

[https://developers.redhat.com/products/amq/overview/](https://developers.redhat.com/products/amq/overview/)

------
kasey_junk
I'm still not sure I understand what the consumer queues are adding? Is it to
allow non-ordered reading to be fast but also allow ordered reading?

------
shmerl
In Java again? I wish such systems would use Rust.

~~~
pjmlp
I love Rust, but it still has a long road to walk until it can match the IDEs,
debuggers, available set of supported OSes and hardware devices, build speed
(cargo always builds from source) and server monitoring tools that the JVM
enjoys.

Plus for the majority of distributed applications on the enterprise level,
using a programming language with GC support isn't an issue.

Finally, there are plenty of languages available on the JVM, straight Java
isn't the only option, just like (luckily) C isn't the only option on UNIX.

~~~
fb03
This. I am falling more and more in love with Rust but i'm having issues
properly using it without proper IDE and debugger support.

It's already a quite different language for someone as me coming from a C89
and Python background, I need as many helpers as I can to ease in eehehe.
intellij-rust edits code, but does not debug (clion does as beta, but clion is
paid). vscode+rust debugs code, but the whole integration feels fragile. I
have yet to try RustDT but this whole time I am trying different toolkits I
could be building code....

So yes, Rust guys please make this happen as fast as you can, we are thirsty
to dive in!

I'm going to try to get involved in the Rust community, translate docs or work
shit they need and that I can help. "x.py" is a joke right now.

~~~
steveklabnik
> but the whole integration feels fragile.

Could you say more about this?

> "x.py" is a joke right now.

This too.

------
EGreg
How is this different from kafka?

~~~
tedmiston
There's a comparison table on the site though it's not super helpful.

[https://rocketmq.incubator.apache.org/docs/motivation/](https://rocketmq.incubator.apache.org/docs/motivation/)

------
Apreche
Does it use AMQP?

~~~
wyldfire
No, according to [1] it uses JMS or TCP (correction: JMS over TCP?).

[1]
[https://rocketmq.incubator.apache.org/docs/motivation/#rocke...](https://rocketmq.incubator.apache.org/docs/motivation/#rocketmq-
vs-activemq-vs-kafka)

~~~
exabrial
JMS is an API (over-simplification, but at it's core it's an API). It doesn't
specify a wire protocol

