Search code examples
javaamqpqpidqpid-proton

What difference between proton-j and proton-j2?


Recently I'm learning AMQP protocol, I found Proton-J and Proton-J2. From their README in the github repo, it seems like they are both a Java implementation of AMQP. I took a quick look of the code, and still have no idea about the difference between them. And why to create a new version Proton-J2.

And I'd like to implement a simple version of Proton-J with less types, etc. to understand how it works. Is there a early version of Proton-J repo that I could refer to to learn the code?


Solution

  • The Qpid protonj2 project is a new generation of AMQP protocol engine that is based on a reactive model vs the temporal squashing model that the proton-j engine provides. The reactive model implementation solves a lot of issues that are experienced by folks implementing clients and servers since you gain full insight into the AMQP events happening in your application vs the proton-j engine's squashing of events which can sometimes hide what actually happened.

    Also the protonj2 project provides a full imperative API client implementation where proton-j is simply a protocol engine.