Question about AxonServer documentation

Hi,

Just for fun (I mean, how much fun can you have with the following…), I am trying to implement a “axon-server-connector” for GO.

At this moment I am able to subscribe and send a basic query between my Java Spring Boot and Golang applications.

So basically I defined a query (GetUserByID), and I can “handle” it in both applications (so for example the Java app sends with the commandGateway the query request, and the golang app replies, and viceversa).

I understand that the concept of different connectors is not really needed because of axon-synapse. But I thought it could be a nice “side” project to understand better how axon works, and also use async programming and goroutines, etc in GO.

But now the real question, I struggled quite a lot to “follow” the flow of, for example how the subscription “process” works, so I make the following gRPC calls:

  • QueryProviderOutbound.Subscribe
  • QueryProviderInbound.Ack

And then when the actual query request is sent:

  • QueryProviderInbound.Query
  • QueryProviderInbound.QueryFlowControl
  • QueryProviderOutbound.QueryResponse
  • QueryProviderInbound.QueryCancel

I could not find documentation on what are the expected “steps” for each “process” (in this case the query subscription, but eventually all the processes related to commands and events). I’m wondering, is there any link to read about that?

Thanks for the amazing product.

1 Like

First and foremost, I think it is super awesome that you’re making an Axon Server Connector in Go, @manuelarte! Over the years, there have been a couple of endeavors on this front. Furthermore, we did intentionally pull out the connector part from Axon Framework for this exact purpose: to make it feasible to construct connectors in other languages.

Let me move through the messages you were wondering about to give my insights about them:

  • QueryProviderInbound.Query - This is the query message sent by a client application to a query handler. This query is used for the point-to-point and scatter-gather query of Axon Framework.
  • QueryProviderInbound.QueryFlowControl - Used to tell that more updates of this query can be send.
  • QueryProviderOutbound.QueryResponse - This is the response of a point-to-point and scatter-gather query.
  • QueryProviderInbound.QueryCancel - Cancels the subscription.

When it comes to documentation, note that the axon-server API does have documentation in the protobuf files. The repository for that, thus with documentation, can be found here: GitHub - AxonIQ/axon-server-api: Protobuf files describing the API of AxonServer

And, you can always check out what we’ve done for the Java connector, of course! You can find the repository for that here: GitHub - AxonIQ/axonserver-connector-java: Java connector for AxonServer

1 Like