From 0f28dc9694bff82fe69e13b98db43d896d8a9c9e Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Fri, 23 Nov 2018 16:33:24 +0800 Subject: [PATCH] Fix bugs on example --- .../rocketmq/RocketMQBusApplication.java | 59 +++++++++++++------ .../src/main/resources/application.properties | 5 -- .../src/main/resources/bootstrap.properties | 4 ++ 3 files changed, 44 insertions(+), 24 deletions(-) delete mode 100644 spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/resources/application.properties create mode 100644 spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/resources/bootstrap.properties diff --git a/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/rocketmq/RocketMQBusApplication.java b/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/rocketmq/RocketMQBusApplication.java index dfae4d832..c4a05a8ba 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/rocketmq/RocketMQBusApplication.java +++ b/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/rocketmq/RocketMQBusApplication.java @@ -16,15 +16,19 @@ */ package org.springframework.cloud.alibaba.cloud.examples.rocketmq; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.ApplicationRunner; -import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.bus.event.AckRemoteApplicationEvent; import org.springframework.cloud.bus.jackson.RemoteApplicationEventScan; import org.springframework.context.ApplicationEventPublisher; -import org.springframework.context.annotation.Bean; import org.springframework.context.event.EventListener; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; /** * RocketMQ Bus Spring Application @@ -32,33 +36,45 @@ import org.springframework.context.event.EventListener; * @author Mercy * @since 0.2.1 */ +@RestController @EnableAutoConfiguration @RemoteApplicationEventScan(basePackages = "org.springframework.cloud.alibaba.cloud.examples.rocketmq") public class RocketMQBusApplication { public static void main(String[] args) { new SpringApplicationBuilder(RocketMQBusApplication.class) + .properties("server.port=0") // Random server port + .properties("management.endpoints.web.exposure.include=*") // exposure includes all + .properties("spring.cloud.bus.trace.enabled=true") // Enable trace .run(args); } + @Autowired + private ApplicationEventPublisher publisher; + + @Value("${spring.cloud.bus.id}") + private String originService; + + @Value("${server.port}") + private int localServerPort; + + @Autowired + private ObjectMapper objectMapper; + /** - * Publish the {@link UserRemoteApplicationEvent} to all instances of currentService. + * Publish the {@link UserRemoteApplicationEvent} * - * @param publisher {@link ApplicationEventPublisher} - * @param currentService Current application Name - * @return {@link ApplicationRunner} instance + * @param name the user name + * @param destination the destination + * @return If published */ - @Bean - public ApplicationRunner publishEventRunner(ApplicationEventPublisher publisher, - @Value("${spring.application.name}") String currentService) { - return args -> { - User user = new User(); - user.setName("Mercy Ma"); - for (int i = 1; i < 10; i++) { - user.setId(Long.valueOf(i)); - publisher.publishEvent(new UserRemoteApplicationEvent(user, currentService, currentService + ":**")); - } - }; + @GetMapping("/bus/event/publish/user") + public boolean publish(@RequestParam String name, @RequestParam(required = false) String destination) { + User user = new User(); + user.setId(System.currentTimeMillis()); + user.setName(name); + publisher.publishEvent(new UserRemoteApplicationEvent(user, originService, destination)); + return true; } /** @@ -68,6 +84,11 @@ public class RocketMQBusApplication { */ @EventListener public void onEvent(UserRemoteApplicationEvent event) { - System.out.println("Listener on User : " + event.getUser()); + System.out.printf("Server [port : %d] listeners on %s\n", localServerPort, event.getUser()); + } + + @EventListener + public void onAckEvent(AckRemoteApplicationEvent event) throws JsonProcessingException { + System.out.printf("Server [port : %d] listeners on %s\n", localServerPort, objectMapper.writeValueAsString(event)); } } diff --git a/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/resources/application.properties deleted file mode 100644 index 6c57bdfe0..000000000 --- a/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/resources/application.properties +++ /dev/null @@ -1,5 +0,0 @@ -spring.application.name=spring-cloud-bus-rocketmq-example - -management.endpoints.web.exposure.include=* - -spring.cloud.bus.trace.enabled=true \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/resources/bootstrap.properties b/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/resources/bootstrap.properties new file mode 100644 index 000000000..1b944de95 --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-bus-rocketmq-example/src/main/resources/bootstrap.properties @@ -0,0 +1,4 @@ +spring.application.name=spring-cloud-bus-rocketmq-example +spring.cloud.stream.rocketmq.binder.namesrv-addr=127.0.0.1:9876 +server.port=8080 +spring.cloud.bus.id=${spring.application.name}:${server.port} \ No newline at end of file