I'm happy to share that AsyncAPI specification 2.2.0 is here. Check out all the goodies that it brings.
This is a minor release, and it doesn't bring any breaking changes. You can switch to it by modifying the following value in your AsyncAPI file
asyncapi: '2.1.0'
intoasyncapi: '2.2.0'
Assigning channels to servers
This feature allows the definition of AsyncAPI documents for applications with more selective use of channels and servers. An example is message protocol adapters that consume messages from one server (say, Kafka) and publish those messages to another server (say, Anypoint MQ).
Now you can add a new servers property to Channel Item Object. It must be a list of server names provided as a string.
1description: This application publishes WebUICommand messages to an AMQP queue on RabbitMQ brokers in the Staging and Production environments.
2servers:
3 - rabbitmqBrokerInProd
4 - rabbitmqBrokerInStaging
5subscribe:
6 message:
7 $ref: "#/components/messages/WebUICommand"
8bindings:
9 amqp:
10 is: queue
Names of servers must match the names of the servers defined in the Servers Object. This new property is optional, so moving from 2.1.0 to 2.2.0 is as easy as changing the specification version in your current AsyncAPI file. If servers is absent or empty, the given channel must be available on all servers defined in the Servers Object, like the previous version.
For more details, check out this pull request.
We heard some community members asking for this feature. It was Gerald Loeffler that decided to champion the proposal and lead it until it got released. Thank you 🙏.
New protocol bindings
The specification is now extended to support the following custom protocols through the bindings feature:
- Anypoint MQ, thanks to Gerald Loeffler. For more details check out this pull request and binding definition.
Become a contributor
Pushing things through into the specification is not an easy process. It requires a lot of time and patience, but it is worth it. Have a look at our contribution guide and start contributing.
Conclusions
Are you wondering how we managed to release 2.2.0 just three months after 2.1.0? I recommend you familiarize yourself with the AsyncAPI release process. The next release is scheduled for January 2022. Later releases are in April, June and September, according to the agreed release cadence.
Does the above meme give you mixed feelings? Are you afraid of possible changes, or actually happy to see it coming? Don't overthink it! Join our Slack and talk to us, or check out the 3.0.0 milestone.
Photo by Jeremy Thomas on Unsplash