
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
@asyncapi/java-spring-template
Advanced tools
Use your AsyncAPI definition to generate java code to subscribe and publish messages
To have correctly generated code, your AsyncAPI file MUST define operationId for every operation.
In order for the generator to know what names to use for some parameters it's necessary to make use of AsyncAPI specification bindings. here is an example of how to use it:
channels:
event.lighting.measured:
publish:
bindings:
kafka:
groupId: my-group
message:
$ref: '#/components/messages/lightMeasured'
subscribe:
message:
$ref: '#/components/messages/lightMeasured'
here is a complete example
asyncapi: '2.0.0'
info:
title: Streetlights API
version: '1.0.0'
description: |
The Smartylighting Streetlights API allows you
to remotely manage the city lights.
license:
name: Apache 2.0
url: 'https://www.apache.org/licenses/LICENSE-2.0'
servers:
production:
url: kafka.bootstrap:{port}
protocol: kafka
variables:
port:
default: '9092'
enum:
- '9092'
- '9093'
channels:
event.lighting.measured:
publish:
bindings:
kafka:
groupId: my-group
operationId: readLightMeasurement
message:
$ref: '#/components/messages/lightMeasured'
subscribe:
operationId: updateLightMeasurement
message:
$ref: '#/components/messages/lightMeasured'
components:
messages:
lightMeasured:
summary: Inform about environmental lighting conditions for a particular streetlight.
payload:
$ref: "#/components/schemas/lightMeasuredPayload"
schemas:
lightMeasuredPayload:
type: object
properties:
lumens:
type: integer
minimum: 0
description: Light intensity measured in lumens.
sentAt:
$ref: "#/components/schemas/sentAt"
sentAt:
type: string
format: date-time
description: Date and time when the message was sent.
asyncapi: '2.0.0'
info:
title: Streetlights API
version: '1.0.0'
description: |
The Smartylighting Streetlights API allows you to remotely manage the city lights.
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
production:
url: mqtt://localhost:{port}
protocol: mqtt
description: dummy MQTT broker
bindings:
mqtt:
clientId: guest
cleanSession: false
keepAlive: 0
lastWill:
topic: /will
qos: 0
message: Guest gone offline.
retain: false
variables:
port:
enum:
- '8883'
- '8884'
default: '8883'
defaultContentType: application/json
channels:
smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured:
description: The topic on which measured values may be produced and consumed.
parameters:
streetlightId:
$ref: '#/components/parameters/streetlightId'
publish:
summary: Inform about environmental lighting conditions of a particular streetlight.
operationId: receiveLightMeasurement
message:
$ref: '#/components/messages/lightMeasured'
smartylighting/streetlights/1/0/action/{streetlightId}/turn/on:
parameters:
streetlightId:
$ref: '#/components/parameters/streetlightId'
subscribe:
bindings:
mqtt:
qos: 0
retain: false
operationId: turnOn
message:
$ref: '#/components/messages/turnOnOff'
components:
messages:
lightMeasured:
name: lightMeasured
title: Light measured
summary: Inform about environmental lighting conditions of a particular streetlight.
payload:
$ref: "#/components/schemas/lightMeasuredPayload"
turnOnOff:
name: turnOnOff
title: Turn on/off
summary: Command a particular streetlight to turn the lights on or off.
payload:
$ref: "#/components/schemas/turnOnOffPayload"
schemas:
lightMeasuredPayload:
type: object
properties:
lumens:
type: integer
minimum: 0
description: Light intensity measured in lumens.
x-pi: false
sentAt:
$ref: "#/components/schemas/sentAt"
turnOnOffPayload:
type: object
properties:
command:
type: string
enum:
- on
- off
description: Whether to turn on or off the light.
x-pi: false
sentAt:
$ref: "#/components/schemas/sentAt"
sentAt:
type: string
format: date-time
description: Date and time when the message was sent.
parameters:
streetlightId:
description: The ID of the streetlight.
schema:
type: string
Usage: ag [options] <asyncapi> @asyncapi/java-spring-template
Options:
-V, --version output the version number
-o, --output <outputDir> directory where to put the generated files (defaults to current directory)
-p, --param <name=value> additional param to pass to templates
-h, --help output usage information
| Name | Description | Required | Default |
|---|---|---|---|
| disableEqualsHashCode | Disable generation of equals and hashCode methods for model classes. | No | false |
| inverseOperations | Generate an application that will publish messages to publish operation of channels and read messages from subscribe operation of channels. Literally this flag will simply swap publish and subscribe operations in the channels. This flag will be useful when you want to generate a code of mock for your main application. Be aware, generation could be incomplete and manual changes will be required e.g. if bindings are defined only for case of main application. | No | false |
| javaPackage | The Java package of the generated classes. Alternatively you can set the specification extension info.x-java-package. If both extension and parameter are used, parameter has more priority. | No | com.asyncapi |
| listenerPollTimeout | Only for Kafka. Timeout in ms to use when polling the consumer. | No | 3000 |
| listenerConcurrency | Only for Kafka. Number of threads to run in the listener containers. | No | 3 |
| connectionTimeout | Only for MQTT. This value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. The default timeout is 30 seconds. A value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails. | No | 30 |
| disconnectionTimeout | Only for MQTT. The completion timeout in milliseconds when disconnecting. The default disconnect completion timeout is 5000 milliseconds. | No | 5000 |
| completionTimeout | Only for MQTT. The completion timeout in milliseconds for operations. The default completion timeout is 30000 milliseconds. | No | 30000 |
| asyncapiFileDir | Path where original AsyncAPI file will be stored. | No | src/main/resources/api/ |
The shortest possible syntax:
ag asyncapi.yaml @asyncapi/java-spring-template
Specify where to put the result and define poll timeout:
ag -o ./src asyncapi.yaml -p listenerPollTimeout=5000 @asyncapi/java-spring-template
If you don't have the AsyncAPI Generator installed, you can install it like this:
npm install -g @asyncapi/generator
Go to the root folder of the generated code and run this command (you need the JDK1.8):
./gradlew bootRun
Generated source contains RabbitMQ docker-compose. So you could use it to test amqp with:
docker-compose -f src/main/docker/rabbitmq.yml up -d
See the list of features that are still missing in the component:
amqp could be out of date. Please have a look to application.yaml and AmqpConfig.javaamqp are not providedparameters for topics are not supportedserver variables are not entirely supportedsecurity schemas are not supportedtraits are not supportedcontent typeIf you want to help us develop them, feel free to contribute.
Thanks goes to these wonderful people (emoji key):
Semen 📖 💻 | Francesco Nobilia 👀 |
This project follows the all-contributors specification. Contributions of any kind welcome!
FAQs
Java Spring template for AsyncAPI generator.
The npm package @asyncapi/java-spring-template receives a total of 1,371 weekly downloads. As such, @asyncapi/java-spring-template popularity was classified as popular.
We found that @asyncapi/java-spring-template demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.