From 9a736f7a7a49c8d39770390f44e2e5bd239d73bc Mon Sep 17 00:00:00 2001 From: deepcloudlabs Date: Thu, 25 Jun 2020 11:52:15 +0300 Subject: [PATCH] implement websocket infrastructure adapter --- hr-microservice-hexagonal/pom.xml | 4 ++++ ...va => EventPuslisherWebsocketAdapter.java} | 10 ++++---- .../example/hr/config/WebsocketConfig.java | 23 +++++++++++++++++++ .../src/main/resources/application.properties | 6 ++++- 4 files changed, 38 insertions(+), 5 deletions(-) rename hr-microservice-hexagonal/src/main/java/com/example/hr/adapter/{EventPuslisherAdapter.java => EventPuslisherWebsocketAdapter.java} (50%) create mode 100644 hr-microservice-hexagonal/src/main/java/com/example/hr/config/WebsocketConfig.java diff --git a/hr-microservice-hexagonal/pom.xml b/hr-microservice-hexagonal/pom.xml index 26f172c..164b8bb 100644 --- a/hr-microservice-hexagonal/pom.xml +++ b/hr-microservice-hexagonal/pom.xml @@ -77,6 +77,10 @@ + + org.springframework.boot + spring-boot-starter-websocket + diff --git a/hr-microservice-hexagonal/src/main/java/com/example/hr/adapter/EventPuslisherAdapter.java b/hr-microservice-hexagonal/src/main/java/com/example/hr/adapter/EventPuslisherWebsocketAdapter.java similarity index 50% rename from hr-microservice-hexagonal/src/main/java/com/example/hr/adapter/EventPuslisherAdapter.java rename to hr-microservice-hexagonal/src/main/java/com/example/hr/adapter/EventPuslisherWebsocketAdapter.java index f88a7da..7d4b584 100644 --- a/hr-microservice-hexagonal/src/main/java/com/example/hr/adapter/EventPuslisherAdapter.java +++ b/hr-microservice-hexagonal/src/main/java/com/example/hr/adapter/EventPuslisherWebsocketAdapter.java @@ -1,5 +1,7 @@ package com.example.hr.adapter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Service; import com.example.hr.events.BusinessEvent; @@ -11,12 +13,12 @@ * */ @Service -public class EventPuslisherAdapter implements EventPushlisher { - +public class EventPuslisherWebsocketAdapter implements EventPushlisher { + @Autowired private SimpMessagingTemplate messagingTemplate; + @Override public void publishEvent(BusinessEvent event) { - // TODO Auto-generated method stub - + messagingTemplate.convertAndSend("changes", event); } } diff --git a/hr-microservice-hexagonal/src/main/java/com/example/hr/config/WebsocketConfig.java b/hr-microservice-hexagonal/src/main/java/com/example/hr/config/WebsocketConfig.java new file mode 100644 index 0000000..9c2bde4 --- /dev/null +++ b/hr-microservice-hexagonal/src/main/java/com/example/hr/config/WebsocketConfig.java @@ -0,0 +1,23 @@ +package com.example.hr.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.simp.config.MessageBrokerRegistry; +import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; +import org.springframework.web.socket.config.annotation.StompEndpointRegistry; +import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; + +@Configuration +@EnableWebSocketMessageBroker +public class WebsocketConfig implements WebSocketMessageBrokerConfigurer { + + @Override + public void configureMessageBroker(MessageBrokerRegistry registry) { + registry.enableSimpleBroker("/topic"); + registry.setApplicationDestinationPrefixes("/ws"); + } + + @Override + public void registerStompEndpoints(StompEndpointRegistry registry) { + registry.addEndpoint("/changes").setAllowedOrigins("*").withSockJS(); + } +} diff --git a/hr-microservice-hexagonal/src/main/resources/application.properties b/hr-microservice-hexagonal/src/main/resources/application.properties index 07e397d..da5a087 100644 --- a/hr-microservice-hexagonal/src/main/resources/application.properties +++ b/hr-microservice-hexagonal/src/main/resources/application.properties @@ -1,10 +1,14 @@ +spring.main.banner-mode=off # REST API URL BASE -# http://localhost:7001/hr/api/v1 +# http(s)://localhost:7001/hr/api/v1 server.address=localhost server.port=7001 server.servlet.context-path=/hr spring.mvc.servlet.path=/api/v1 +# WebSocket URL +# ws://localhost:7001/hr/api/v1/changes + major.version=1 minor.version=0 timestamp=1581420934