Display server per channel in springwolf-ui
In a setup similar to your example ExampleClassLevelKafkaListener, I tried to use KafkaAsyncOperationBinding "type" in order to separate listeners per server they listen to. But I'm getting "kafka" instead.
springwolf-kafka version 1.1.0.
@KafkaListener(topics = "${push-api.topic}", groupId = "${push-api.topic.consumer-group}")
public class PushApiListener {
@KafkaHandler
@KafkaAsyncOperationBinding(
type = "kafka-external"
)
public void handleNotification(NotificationDto notification) {
...
}
springwolf.docket.servers.kafka-external.protocol=kafka-secure
springwolf.docket.servers.kafka-external.host=...
Expected: In the UI listener will be shown with tag "kafka-external" Actual: It is shown still as "kafka"
EDIT by maintainer:
Requested enhancement:
- [ ] Display the
servername inspringwolf-ui. A starting point can bechannels.component.html. This can be a simple tag next to theprotocol badge.
According to the spec, a server can be present on the channel kafka-example. If not present, the channel is available on all servers defined in the servers block.
You, or anybody who is interested, is welcome to contribute.
Welcome to Springwolf. Thanks a lot for reporting your first issue. Please check out our contributors guide and feel free to join us on discord.
Hi @stammaja,
that is a great feature enhancement to show in springwolf-ui the server for each found channel (kafka topic in your case).
Using your example, you probably want to configure it, so that the server name is kafka-external:
springwolf.docket.servers.kafka-external.protocol=kafka
springwolf.docket.servers.kafka-external.host=...
Also, your listener needs to know about the server name. You can use the @AsyncOperation annotation for that:
@KafkaHandler
@AsyncListener(
operation =
@AsyncOperation(
channelName = TOPIC,
servers = {"kafka-external"}))
public void handleNotification(NotificationDto notification) {
// ...
}
(We plan to remove the type field as it is constant for the protocol name (kafka) and should not be modified)
Now, the server name shows up correctly in the asyncapi.json file.
To better indicate in the ui the difference between protocol and server name, https://github.com/springwolf/springwolf-core/pull/738 updates the examples
Help is still welcome to show the server name as part of the channel item
On this is being worked in https://github.com/springwolf/springwolf-core/pull/832
The change is staged for release and will be part of the next release.
If you want to try and verify it in your application today, use the latest 1.X.0-SNAPSHOT build as described in our README.md > Testing SNAPSHOT version
Thank you for the report/contribution!
The change is available in the latest release. 🎉
Thank you for the report/contribution and making Springwolf better!